【发布时间】:2013-11-25 18:48:14
【问题描述】:
我正在尝试了解有关 jquery deferred/promises 的更多信息。我有点理解当你想要进行 1 个 ajax 调用时,但是一起做多个(x 个)ajax 调用呢?这是我正在尝试做的一个 jsfiddle:http://jsfiddle.net/vRJ7v/
例如(使用 lastFM api):
var last_fm_url = 'http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=';
var apiKey = //my lastfm api key;
var user_list = ['user1','user2'.....'userX'];
var getTracks = function( user ){
var dfd, last_fm_url;
dfd = $.Deferred();
last_fm_url = last_fm_url + user + '&limit=10&period=3month&api_key='+ apiKey +'&format=json';
$.getJSON( last_fm_url ).done(function( results ) {
dfd.resolve();
}).fail(function( error ) {
dfd.reject();
});
return dfd.promise();
};
var fetchMultipleTracks = function(){
var dfd, user_list_count, promises = [];
var dfd = $.Deferred();
user_list_count = user_list.length;
for(var i = 0; i < user_list_count; i++ ){
promises.push( getTracks(user_list[ i ]) );
}
$.when( promises ).done(function(results){
dfd.resolve();
});
return dfd.promise();
};
var test = fetchMultipleTracks();
test.done(function( results ){
console.log( results );
}, function( error ){
// error
});
但我似乎无法返回实际结果,它只返回http://d.pr/i/N5Yi
【问题讨论】:
标签: javascript jquery jquery-deferred deferred last.fm