按顺序收集AJAX结果

Lee*_*Lee 6 javascript arrays ajax jquery

我有一个值数组(myarray),我想迭代并在每次迭代时运行一个AJAX请求.我已将每个ajax请求放在另一个数组(requests)中,以便我可以alert在所有AJAX请求完成时调用:

像这样:

var requests = [];
for (i = 0; i < myarray.length; ++i) {
    requests.push($.ajax({
        url: 'anotherurl?=' + myarray[i],
        dataType: "JSONP",
        success: function (data) {
          array_of_results.push(data);
        }
    }));
}
$.when.apply($, requests).done(function() {
    alert('complete');
});
Run Code Online (Sandbox Code Playgroud)

收集所有结果array_of_results.但是由于AJAX请求需要不同的时间来完成,因此该数组不具有原始顺序的结果.

有没有办法订购这个阵列?

我希望我有道理.我很欣赏这是非常复杂的.

Pau*_*eau 7

你试过以下吗?我认为这应该有效.所有答复都应按顺序提供,并在成功函数中使用when().

var requests = [];
for (i = 0; i < myarray.length; ++i) {
    requests.push($.ajax({
        url: 'anotherurl?=' + myarray[i],
        dataType: "JSONP"
    }));
}
$.when.apply($, requests).done(function() {
    array_of_results = arguments;
    alert('complete');
});
Run Code Online (Sandbox Code Playgroud)