jquery - 如何检测循环中的最后一个 ajax 调用?
问题描述
我在循环中有一个 ajax 调用,我想检测最后一次在循环中触发 ajax 调用:
for ( var i = 0; i < diff.length ; i++ ) {
...some more code...
var isLastElement = e == diff.length -1;
$.ajax({
method:'POST',
data: {
},
url:'somepath',
success : function (data) {
if (isLastElement) {
alert('last item');
}
}
});
}
没有警报,但控制台中也没有错误。
解决方案
我假设这里有一个错字,e
应该在哪里i
......
var isLastElement = e == diff.length -1;
但无论如何,不要使用循环索引。如果您使用在循环之外声明的变量,您将为自己节省很多麻烦......并在 ajax 回调中增加此变量的值。
var callCount = 0
for ( var i = 0; i < diff.length ; i++ ) {
$.ajax({
method:'POST',
data: {
},
url:'somepath',
success : function (data) {
if (callCount==diff.length-1) {
alert('last item');
}
callCount++
}
});
}
请注意,请求是异步的......并且不保证将按顺序接收响应。所以“最后一个”将是花费最长时间的那个......
推荐阅读
- javascript - 使用 Axios 和 React 传递 Header JWT 令牌?
- javascript - 仅在关闭时使用 LocalStorage
- ruby-on-rails - 将项目连接到 Postgresql 数据库时遇到问题(服务器是否在本地运行并接受连接?)
- python - 从电子表格以 Python 方式创建邻接矩阵
- mongodb - MongoDb 乐观并发与 upsert
- c++ - 内存位置的 nlohmann json 解析错误
- python - 使用 gspread - webscrape 将行附加到谷歌表格并为生成日期的数据添加 datekey 列
- python - 键盘交互
- java - java.lang.NumberFormatException:对于输入字符串“v2.6.5.2”
- vue.js - Nuxt.js,如何将 Sitemap.xml 添加到动态路由中?