javascript - 超基本的 JavaScript 回调

标签 javascript jquery json callback

我以为我得到了回调,但我无法让它们在我为理解这个概念而设置的这个小问题中工作:

我有一个 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/

相关文章:

jquery - 日期选择器选定的值始终出现在第一个文本框中

java - JBoss EAP 7 中缺少 Jackson 依赖项

jquery - jquery中没有定义长度

python - 将json插入mysql。 json 字符串是从 json.dumps 中获取的

javascript - 使用 jQuery 进行上/下/左/右键盘导航?

javascript - 在javascript中的另一个方法中调用方法?

javascript - 带有额外填充的 jquery 选项卡动态创建/删除新选项卡

jquery - 将 Google map 插入 WYSIWYG 编辑器,然后正确保存和检索

javascript - 我的 XML 文件未通过 Google Chrome 和 Internet Explorer

javascript - jQuery/AJAX 验证后提交