Я написал скрипт, который будет использоваться в качестве 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)
})