Есть ли способ улучшить скорость этого скрипта NodeJS? - PullRequest
0 голосов
/ 15 сентября 2018

Я написал скрипт, который будет использоваться в качестве API для моего сайта, но я хочу улучшить его скорость.

Смысл сценария состоит в том, чтобы рассчитать общую сумму RAP пользователя (недавнюю среднюю цену) всех его ограниченных предметов в ROBLOX.

Требуется 3,2 секунды, чтобы собрать более 42 м RAP от пользователя 'ROBLOX' (тот, у кого наибольшее общее количество RAP), и мне интересно, смогу ли я сбить это на секунду или две. Вот код:

let request = require('request-promise-lite')

request.Request.defaults = {
    json: true
}

const RAP_API = (id, asset, cursor) => `https://inventory.roblox.com/v1/users/${id}/assets/collectibles?assetType=${asset}&sortOrder=Asc&limit=100&cursor=${cursor}`

const assetTypes = ['Hat', 'Gear', 'Face', 'HairAccessory', 'FaceAccessory', 'NeckAccessory', 'ShoulderAccessory', 'FrontAccessory', 'BackAccessory', 'WaistAccessory']

class ROBLOX {
    constructor(id) {
        this.start = new Date()
        this.id = id
        this.RAP = 0
    }

    async getRAPforItemType(asset, cursor = "") {
        let API = await request.get(RAP_API(this.id, asset, cursor))
        API.data.forEach(item => this.RAP += Number(item.recentAveragePrice) || 0)
        if (API.nextPageCursor)
            return this.getRAPforItemType(asset, API.nextPageCursor)
    }

    async getRAP() {
        let requests = []
        for (let asset of assetTypes)
            requests.push(this.getRAPforItemType(asset))
        await Promise.all(requests)
        return {
            RAP: this.RAP,
            time: (new Date() - this.start) / 1000
        }
    }
}

new ROBLOX(1).getRAP().then((RAP) => {
    console.log(RAP)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...