gpt4 book ai didi

javascript - 如何使用 riot-lol-api 连续发出多个请求?

转载 作者:行者123 更新时间:2023-12-03 00:48:24 25 4
gpt4 key购买 nike

情况:

我有一个现有的代码库,它使用另一个库向 Riot API 发出请求。遗憾的是,该库有一些问题,所以我决定切换到这个:

https://www.npmjs.com/package/riot-lol-api

https://github.com/Neamar/riot-lol-api/blob/master/lib/index.js

唯一的问题:这个库似乎没有使用 Promise,而旧的库却使用了 Promise,而且我很难使我的代码适应这个新库。

<小时/>

代码:

var urls = [];

for (var i = 0; i < enemies.length; i++) {
urls.push('/lol/league/v3/positions/by-summoner/'+enemies[i].summonerId);
}

let promises = urls.map(url => fetchData(url, region, "league"));

Promise.all(promises).then(responses => {

console.log("RESPONSES: "+responses);

...

function fetchData(url, region, tag) {

// This used to be a promise when the old library was used

riotRequest.request(region.toLowerCase(), tag, url, function(err, data) {
if (!err) {
return data;
} else {
console.error("ERROR FIRST ITERATIONS: "+err);
res.render("threat", {errorMessage: "Player not found ! The game must either have started or be on the loading screen.", finalPlayers: undefined});
}
});

}

现在,当然,这不起作用,但可以将其视为伪代码来解释我想在这里实现的目标。

<小时/>

输出:

RESPONSES: ,,,,
<小时/>

问题:

如何使我的代码适应新库?

最佳答案

当我编写这个库时,Promise 非常慢。使用 Promise 可以让我每个 CPU 每秒发送 700 个请求,如果没有 Promise,我可以让每个 CPU 每秒发送 1000 个请求。

如果性能在您的情况下不是问题,您可以使用这个小包装器将回调样式函数转换为 Promise:

let RiotRequest = require('riot-lol-api');

let riotRequest = new RiotRequest('<your-key>');

// This function will return a promise that you can then use with Promise.all
function promisifiedRequest(region, group, endpoint) {
return new Promise((resolve, reject) => {
riotRequest.request(region, group, endpoint, function(err, res) {
if(err) {
reject(err)
}
else {
resolve(res);
}
})
});
}

// Example use:
promisifiedRequest('euw1', 'summoner', '/lol/summoner/v3/summoners/by-name/graphistos').then(function(response) {
console.log("Result:", response);
}).catch(console.log)

关于javascript - 如何使用 riot-lol-api 连续发出多个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com