我知道.getJSON进行异步调用。这意味着我可以在for循环之后(因为.getJSON赢了)完成后,无法控制数组'流#s;' stream。但是,我的大多数Javascript取决于这些调用的结果!我认为这是承诺的来源。
但我真的需要等到所有.getJSON调用都是通过数组进行的,这意味着只将promise调用放在数组的最后一块(我想)。我应该怎么做呢,或者我是以错误的方式看待这个问题?感谢。
var reg_users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var streams = [];
for (var i = 0; i < reg_users.length; i++) {
$.getJSON('https://api.twitch.tv/kraken/streams/' + reg_users[i] + '?callback=?', function(data) {
streams.push(data);
});
}
答案 0 :(得分:1)
var reg_users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var reqs = [];
for (var i = 0; i < reg_users.length; i++) {
reqs.push($.getJSON('https://api.twitch.tv/kraken/streams/' + reg_users[i] + '?callback=?'));
}
Promise.all(reqs).then((res) => {
// do things with responses here.
});
答案 1 :(得分:0)
这是一个解决方案。
var reg_users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var streams = [];
var promises = [];
for (var i = 0; i < reg_users.length; i++) {
promises.push($.getJSON('https://api.twitch.tv/kraken/streams/' + reg_users[i] + '?callback=?'));
}
Promise.all(promises).then(function(all_data){
// all_data is a list of response
all_data.forEach(function(data){
streams.push(data);
});
});