Node.js中的种族状况



我正在学习Node.js并为API做练习。我想从twitch获得关于游戏前200个流的数据。然而,由于限制是100,所以我必须在for循环中进行两次请求。问题是比赛条件。当我请求0-100和100-200之间的数据时,我不知道哪一个数据会优先。因此,我标记状态以记录哪一个先出现,但它似乎不正确。有人能告诉我我的方法哪里不对吗?如何改进?非常感谢。

const request = require('request');
const process = require('process');
const args = process.argv[2];
let offset = 0;
let flag = false;
const clientID = 'agdn5682y521syqhwkdrqmw7ho6v7d';
function getGameInfo(gamename, pagination, clientid, tag) {
request(
{
method: 'GET',
url: `https://api.twitch.tv/kraken/streams/?game=${gamename}&limit=100&offset=${pagination}`,
headers: {
'Client-ID': clientid,
'Accept': 'application / vnd.twitchtv.v5 + json'
}
},
(err, res, body) => {
if (!tag) {
tag = true;
if (err) {
return console.log('Error', err)
};
const data = JSON.parse(body);
const result = data.streams;
if (data.status === 404) {
console.log('fail to get data!');
};
for (let j = 0; j < result.length; j++) {
console.log(result[j].channel._id, result[j].channel.display_name);
};
tag = false;
}
}
)
}
for (let i = 0; i < 2; i++) {
getGameInfo(args, offset, clientID);
offset += 100;
}

这里有一个你可以做的小例子。Promise等待,直到它得到resolve()

然后您可以调用下一个偏移量。

const request = require('request');
const process = require('process');
const args = process.argv[2];
let offset = 0;
let flag = false;
const clientID = 'agdn5682y521syqhwkdrqmw7ho6v7d';

function getGameInfo(args, offset, clientID){
return new Promise(function(resolve, reject){
const options = {
method: 'GET',
url: `https://api.twitch.tv/kraken/streams/?game=${args}&limit=100&offset=${offset}`,
headers: {
'Client-ID': clientID,
'Accept': 'application / vnd.twitchtv.v5 + json'
}
}
request(options, function (err, response, body) {
if (err) return reject(err);
try {
resolve(JSON.parse(body));
} catch(e) {
reject(e);
}
});
});
}
getGameInfo("pubg", offset, clientID).then(function(val) {
console.log(val);
}).catch(function(err) {
console.log(err);
});

相关内容

  • 没有找到相关文章

最新更新