如何在数组上调用.getJSON
How do I call .getJSON on an array?
我知道.getJSON进行异步调用。这意味着我无法在for循环之后对数组"streams"进行console.log(因为.getJSON还没有完成)。然而,我的大部分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);
});
}
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.
});
这里有一个解决方案。
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);
});
});
相关文章:
- 当站点不是其URL的根时,如何在getJSON调用中定位API
- 如何在循环期间访问 jquery getJson 调用 ($.getJson) 中的索引变量
- 如何处理 getJSON 调用上的“未捕获类型错误:无法设置未定义的属性'prop'”
- 使用 $.getJson 方法从 jquery 调用 C# MVC 控制器方法
- 如何对调用getJSON的javascript函数进行单元测试
- 分别使用两个getJSON调用
- 在另一个getJSON调用的回调中,没有为getJSON调用触发回调
- jQuery getJSON在成功时从不调用成功函数
- 不能调用未定义的 GetJson 的方法“toLowerCase”
- 在从 getJSON 调用返回的数据发生更改时触发事件
- $.getJSON() 在 $.each() 循环中的调用未按顺序执行
- 多次调用 .getJSON
- 如何在highchart部分中调用getJSON
- 调用$.getJSON并发送URL参数
- 在document ready中调用getJSON静默失败
- 如何多次调用getJson并在它完成第一个传递项后传递值
- 如何在数组上调用.getJSON
- 如何继续调用getjson,直到它没有空响应
- jQuery:调用 $.getJSON 时填充数组时出现问题
- 当调用getJSON时,防止滚动到顶部