Jquery ajax里面.each当整个.each完成时如何触发函数

jac*_*hao 3 javascript ajax jquery asynchronous

我有以下功能:

$.each(friends, function(friend, data) {
        var group = "Chat";

$.ajax({'type':'GET', 'url':'/site/getgroup?username=' + friend,
'success':function(callback){

group = callback;
self.addFriend(friend, data.status, group);

}, //ajax success
});  //ajax

            });
Run Code Online (Sandbox Code Playgroud)

在这些代码之后,我有一些代码来使用来自这些.each和.ajax的数据来初始化chatBar.但是,由于Ajax是异步的,因此它变得非常错误.我怎么知道这些.each都完成了返回的ajax值而没有将ajax async设置为false?(意味着这部分完全完成).

就像有一种方法我可以使用.promise,.complete或XHR来了解整个.每个事情都是完整的吗?我尝试了很多东西,但它们似乎不适合我.

谢谢,

Aru*_*hny 11

使用$ .when()

var xhrs = []
$.each(friends, function (friend, data) {
    var group = "Chat";
    var xhr = $.ajax({
        'type': 'GET',
        'url': '/site/getgroup?username=' + friend,
        'success': function (callback) {
            group = callback;
            self.addFriend(friend, data.status, group);    
        }, //ajax success
    }); //ajax
    xhrs.push(xhr)
});

$.when.apply($, xhrs).done(function(){
    //all are complete
});
Run Code Online (Sandbox Code Playgroud)