繁体   English   中英

在每个循环后使用ajax调用函数

[英]Call a function after each loop with ajax calls

我在做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();
      }
    }
  });
});

Perharps帮助:

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

        var jqxhr = $.ajax({
            url: '@Url.Action("AddMemberToGroup")',
            type: "POST",
            data: dataforpost,
            success: function(data) {}
        });
        jqxhr.then(function() {
          console.log( index );
          if ((index+1) >= selectedRows.length){
             console.log('last');
             // now when that loop is done, do something
             doSomething();
          }
        });
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM