[英]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.