在运行新函数之前,如何确保所有AJAX请求都已完成?

时间:2013-04-21 21:16:41

标签: jquery ajax json twitter jsonp

我正在创建一个应用,根据用户从表单中选择的名称显示推文。选择将传递给" getTweets"功能,像这样:

function getTweets(selections) {

    var holdTweets = [];

    $.each( selections, function(){

        $.ajax({
            url: 'http://api.twitter.com/1/statuses/user_timeline/'+this.id+'.json?callback=?',
            dataType: 'jsonp',
            success: function(data) { holdTweets.push(this); },
            error: function() { console.log('something went wrong'); }
        });

    });
}

在完成所有AJAX请求之后,我想在解析JSON之前对holdTweets数组进行排序。

一切正常:AJAX请求返回JSON并且正在填充holdTweets数组。在进行排序之前是否可以检查所有AJAX请求是否已完成?如果是这样,怎么样?

提前致谢!

2 个答案:

答案 0 :(得分:0)

谢谢,伙计们。我已经做到了,而且工作正常。

function getTweets(selections) {

    var holdTweets = [];

    $.each( selections, function(){

        $.ajax({
            url: 'http://api.twitter.com/1/statuses/user_timeline/'+this.id+'.json?callback=?',
            dataType: 'jsonp',
            success: function(data) { 
                holdTweets.push(this);
                if(holdTweets.length === selections.length) { 
                    sortFunction(holdTweets); 
                }
            },
            error: function() { console.log('something went wrong'); }
        });

    });
}

答案 1 :(得分:0)

当您使用jQuery时,ajaxStop方法允许您注册在所有Ajax请求完成时要调用的处理程序。