我使用$.when
在循环中调用ajax函数:
for ( var i = 0; i < 4; i++ ){
$.when(get_total_price("var1","var2")).then(function (v) {
console.log("i= "+i);
});
}
我希望在每次迭代中,它等待ajax调用完成,而不是执行下一次迭代,所以这个简单示例的结果将是:
i= 1
i= 2
i= 3
但结果是:
i= 5
i= 5
i= 5
在这种情况下,我无法在ajax调用中使用i
!
答案 0 :(得分:3)
函数回调是异步完成的,因此在循环终止后调用。
答案 1 :(得分:1)
正如其他人所指出的那样,when
是在javascript中进行异步编程的延迟模型。循环在异步函数之前终止,即在调用回调时。这是一个使用IIFE:
for ( var i = 0; i < 4; i++ ){
(function() {
$.when(get_total_price("var1","var2")).then(function (v) {
console.log("i= "+i);
})
)(i);
}