$.getJSON
是異步的。
你提醒正在運行你有陣列中的數據之前。
要查看數據時,它的面世,移動警報(或更好,但console.logs)成的成功回調:
$(document).ready(function() {
var streamers = ["freecodecamp", "GeoffStorbeck", "terakilobyte"];
var cb = '?client_id=5j0r5b7qb7kro03fvka3o8kbq262wwm&callback=?';
var url = 'https://api.twitch.tv/kraken/';
var result = {};
streamers.forEach(function(stream) {
$.getJSON(url + 'streams/' + stream + cb).success(function(data) {
var streaming = (data.stream === null) ? false : true;
result.push(stream + " - " + streaming);
console.log(result);
});
});
});
移動從看結果使用結果,你」我想打破一點:
$(document).ready(function() {
var streamers = ["freecodecamp", "GeoffStorbeck", "terakilobyte"];
var cb = '?client_id=5j0r5b7qb7kro03fvka3o8kbq262wwm&callback=?';
var url = 'https://api.twitch.tv/kraken/';
var result = {};
var getStreams = streams.map(function (stream) {
return $.getJSON(url + 'streams/' + stream + cb).success(function(data) {
var streaming = (data.stream === null) ? false : true;
result.push(stream + " - " + streaming);
console.log(result);
});
});
var onResultsSuccess = function (results) {
console.log("I have all my streams, let's take a look at them:", results);
};
var onResultsFail = function() {
console.log("Something's up!", arguments);
};
$.when(getStreams).then(onResultsSuccess, onResultsFail);
});
未經測試,所以假設它是僞!
JSON功能通常是'asynchronous',這意味着你的AR在主代碼塊完成之後正在構建光線。 – somethinghere
['$ .getJSON'(http://api.jquery.com/jquery.getjson/)是異步 – blgt
相關[如何返回從異步調用的響應?](http://stackoverflow.com/ (14220321/how-to-return-the-a-an-asynchronous-call),但在處理異步操作的循環中可能有更好的重複。 – apsillers