ajax成功的For循环问题
for loop issue with ajax success
我在for循环中调用ajax函数。但我得到1
内ajax成功。小提琴
function a(){
var myAr= [0];
for(var i=0; i<myAr.length;i++){
console.log(i +" a")
var root = 'http://jsonplaceholder.typicode.com';
$.ajax({
url: root + '/users',
method: 'GET'
}).then(function(data) {
console.log(i + " c")
});
console.log(i + " b")
}
}
a()
.then()
只在收到AJAX的响应时执行。
此时,i = 1,因为底边循环已经结束。
如果您想要AJAX请求创建时的原始值,您可以在i
中创建一个本地作用域上的新变量。这样,在.then()
方法内部执行的闭包具有原始值。
更新小提琴。
你必须使用闭包,否则它会计算到最后一次执行的值
function a(){
var myAr= [0];
for(var i=0; i<myAr.length;i++){
console.log(i +" a")
var root = 'http://jsonplaceholder.typicode.com';
$.ajax({
url: root + '/users',
method: 'GET'
}).then(function(i) {return function(data) {
console.log(i + " c")
}}(i));
console.log(i + " b")
}
}
a()
根据您的代码,console.log(i + " c")
仅在ajax调用完成时执行。对于这种功能,你必须以不同的方式触发它。
这是一个工作演示。
function a() {
var myAr= [0, 2, 3];
var startIndex = 0;
var doAjaxCall = function(i) {
console.log(i +" a");
var root = 'http://jsonplaceholder.typicode.com';
$.ajax({
url: root + '/users',
method: 'GET'
}).then(function(data) {
console.log(i + " c");
if(i < (myAr.length - 1)) {
i++;
doAjaxCall(i);
}
});
}
doAjaxCall(startIndex);
}
a();
相关文章:
- Jquery图像循环问题
- JavaScript的循环问题,将值插入数组将不起作用
- 数学和循环问题
- Java脚本循环问题
- NetSuite行项目删除内部循环问题
- 附加仅适用于第一个子循环问题
- 简单的 do/while 循环无限循环问题
- Javascript 和 HTML5 循环问题
- 仅在jQuery函数内部循环问题
- 嵌套循环问题
- 谷歌地图标记的循环问题
- 函数在 For 循环问题中
- PHP while 循环问题在 iOS 5 Safari 中
- JavaScript 加载重置时间戳循环问题
- Jquery 循环问题
- 与jquery结合使用时的Javascript循环问题
- Javascript中的ID和for循环问题
- 无限滚动(mysql,php&js)循环问题
- Facebook查询循环问题
- jQueryrotate if else循环问题