javascript - 每次使用 ajax 调用循环后调用一个函数

标签 javascript jquery promise

我有一个正在制作 ajax 帖子的循环。我想仅在循环(以及每个循环内的 ajax 帖子)完成后才执行函数“doSomething()”。

我认为这被称为 promise ,但我只是在永远完成服务器端之后才开始使用 jQuery...

 selectedRows.each(function(e) {
            var dataforpost = { groupId: selectedGroup.Id, 
            userName: userName, displayName: displayName };

            $.ajax({
                url: '@Url.Action("AddMemberToGroup")',
                type: "POST",
                data: dataforpost,
                success: function(data) {}
            });
        });
        
  // now when that loop is done, do something
  doSomething();

最佳答案

您可以使用$.when:

$.when(selectedRows.each(function(e) {
  var dataforpost = { groupId: selectedGroup.Id, 
  userName: userName, displayName: displayName };

  $.ajax({
    url: '@Url.Action("AddMemberToGroup")',
    type: "POST",
    data: dataforpost,
    success: function(data) {}
  });
})).then(function() {
  // now when that loop is done, do something
  doSomething();
});

或者您可以跟踪最后一个循环并触发 done 函数调用:

selectedRows.each(function(i, e) {
  var dataforpost = { groupId: selectedGroup.Id, 
  userName: userName, displayName: displayName };

  $.ajax({
    url: '@Url.Action("AddMemberToGroup")',
    type: "POST",
    data: dataforpost,
    success: function(data) {},
    done: function() {
      if (i == selectedRows.length - 1) {
        // now when that loop is done, do something
        doSomething();
      }
    }
  });
});

关于javascript - 每次使用 ajax 调用循环后调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070195/

相关文章:

javascript - 在 sammy.js 中注册多个路由

Javascript - 解析文件创建和保存......但不是类中的对象......它去哪里了?

javascript - 单击 FB Like 按钮后调用函数

javascript - 等待多个并发 await 操作

javascript - 如何从 AngularJS 中的服务调用 ajax?

javascript - 为什么这段代码不遍历对象的所有属性?

jquery - Dynatree/Fancytree 初始化和 Ajax 加载的完整事件?

javascript - 隐藏元素在另一个元素之间滑动

node.js - 我怎样才能 promise 这些功能?

javascript - 如何打印已被 javascript 更改的页面?