【发布时间】:2016-05-18 13:04:54
【问题描述】:
我有一个自定义循环,需要在进入下一次迭代之前执行一个函数。这是代码:
function customIteration(arr, i)
{
if (i==arr.length) return;
var message = arr[i];
jQuery('#stepTwo #num1StepTwo').html('Expires: ' + $num1);
jQuery('#stepTwo #num2StepTwo').html(jQuery(message).find('.num2').text());
jQuery('#stepTwo #num3StepTwo').html(jQuery(message).find('.num3').text());
i++;
jQuery.when(mySpecialFunction()).then(customIteration(arr, i));
}
mySpecialFunction():
function mySpecialFunction(){
return jQuery.ajax({
url: "https://api.site.com/customurl",
dataType: "jsonp",
data: { data1: $data1, data2: $data2 },
success: function (data) {
...some code...
},
error: function (e) {
...some other code...
}
});
}
问题是,我在 Fiddler 中看到,上面循环的所有实例都会立即点击该 url,而无需等待从 mySpecialFunction() 中的 ajax 代码获得响应。这当然会弄乱我应该得到的结果。
【问题讨论】:
-
将
.then(customIteration(arr, i))更改为.then(function(){ customIteration(arr, i) })。 -
@A1rPun 这确实有效!非常感谢。
标签: javascript jquery ajax loops .when