我有一个正在制作 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/