javascript - 在每个循环后使用 ajax 调用调用一个函数
问题描述
我有一个循环,我正在制作一个 ajax 帖子。我只想在我的循环(以及每个循环内的 ajax 帖子)完成后才执行函数“doSomething()”。
我认为这被称为一个承诺,但我只是在永远做服务器端之后才进入 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();
}
}
});
});
推荐阅读
- mysql - nodejs通过准备好的语句与mysql类似的查询抛出错误
- openshift - Openshift 管道失败并出现错误:# is already in progress (Running)
- tensorflow - 时代花费越来越多的时间
- amazon-web-services - (Bug) Elasticloadbalancer 找不到带有 arn cloudformation 的 ACM 证书
- opencv - OpenCV 在帧捕获时设置错误的相机分辨率
- python-3.x - 比较两个数组并获取不常见的值
- linux - Imagemagick ftp 和空间
- c# - 根据 Y 值在 Unity 中跳跃不一致
- neo4j - 如何在嵌入式 neo4j 中使用“apoc.util.md5”
- javascript - 将 google doc 转换为 pdf 会导致空白 pdf、google 脚本