javascript - jquery ajax inside .each 如何在整个.each完成时触发函数

标签 javascript jquery ajax 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

            });

在这些代码之后,我有一些代码使用这些 .each 和 .ajax 中的数据来初始化聊天栏。然而,现在由于 Ajax 是异步的,所以它变得非常有问题。在不将 ajax async 设置为 false 的情况下,我怎么知道这些 .each 都已完成返回的 ajax 值? (意味着这部分已经完全完成)。

有没有一种方法可以使用 .promise、.complete 或 XHR 来了解整个 .each 事情是否完整?我尝试了很多东西,但它们似乎不适合我。

谢谢,

最佳答案

使用$.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
});

关于javascript - jquery ajax inside .each 如何在整个.each完成时触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18920282/

相关文章:

javascript - 用于多个项目的 Ajax 加载器脚本

javascript - 如何根据 javaScript 中的特定字符序列拆分文本

javascript - 当我删除列时获取 id

javascript - 在 jQuery DataTables 中使用 sDom 删除搜索框

Javascript 与 Bootstrap 功能冲突

jQuery 表单验证,仅允许 .EDU 电子邮件地址

javascript - ajax php javascript php页面打开,参数未传递

javascript - 删除多个文档时Mongo write出现异常

php - 从 PHP 访问 JS 数据

javascript - 文本区域只读自动高度(填充所选日期)