我以为我得到了回调,但我无法让它们在我为理解这个概念而设置的这个小问题中工作:
我有一个 Twitch.tv 主播列表(我在处理 freecodecamp 问题时偏离了方向)和一个空数组:
var players = ["imaqtpie", "imaqtpie"]; //this guy's always online. It's just easier.
var games = [];
我想做的就是获取每个流媒体玩的游戏,并将其传递到页面加载时的“游戏”数组。
我有这个:
var players = ["imaqtpie", "imaqtpie"];
var games = [];
function functionUNO(callback) {
var a;
for(i = 0; i < players.length; i++) {
a = $.getJSON('https://wind-bow.gomix.me/twitch-api/streams/' + players[i] + '?&callback=?');
games.push(a);
};
callback();
};
function functionDOS() {
console.log(games);
};
$(document).ready(function(){
functionUNO (function() {
functionDOS();
});
});
它正确返回数组中的json,但我不知道如何仅获取玩过的游戏。
我试过了
var a = $.getJSON('https://wind-bow.gomix.me/twitch-api/streams/' + players[i] + '?&callback=?', function(json) {return json.stream.game});
这不起作用,并且
var a = $.getJSON('https://wind-bow.gomix.me/twitch-api/streams/' + players[i] + '?&callback=?', functionTRES);
具有单独的函数TRES
function functionTres(data) {
games.push(data.stream.game);
};
返回游戏和 json...
我做错了什么?
最佳答案
您需要使用jQuery.when()
,因为一旦所有 promise 都得到履行,callback()
就应该被执行。由于 games
是一个数组,我们需要使用 apply()
$.when.apply($, games).then(function() {
callback();
});
而不是
callback();
注意:根据当前代码,games
是一系列 promise 。
关于javascript - 超基本的 JavaScript 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019519/