0

我正在尝试使用 For 循环和 JQuery mobile 中的数组来发出 ajax 请求。

我在尝试着:

  1. 发送所有请求。
  2. 存储所有响应。
  3. 在所有 Ajax 完成后,执行另一个操作。

这是我到目前为止并没有真正起作用的东西(这就是我在这里的原因)。

var req1 = [];
var req2 = [];
var size = //some number passed to here//;

//Create size number of unique ajax json requests
for (i = 0; i < size; i++) {
        requestA[i] = // GET request for json datatype //;
        requestB[i] = $.ajax(requestA[i]);   
};

for (j = 0; j < size; j++) {
    requestB[j].done (function (response) {   
        if (response[j].results.length > 0) (      
            requestB[j] = response[j].results;            
        }
});   

$(document).ajaxStop (function() {
        // Do this after all ajax is done //   
});
4

2 回答 2

0

在回调中尝试锁定数组。

像这样的东西

var isLoked = false;

// ...
if (response[j].results.length > 0 && !isLocked) (
        isLocked = true;    
        requestB[j] = response[j].results;            
        isLocked = false;
}

PS 为什么你不想在同一个循环中发出请求和分配回调?

于 2013-08-10T17:15:50.587 回答
0

我不确定你为什么要这样做,我会用它$.when来安装回调......并且可以将所有响应传递给它。

var req = [];
var size = 5;

for (i = 0; i < size; i++) {
        // not sure what the signicance of A and B arrays are here...
        requestA[i] = // GET request for json datatype //;
        requestB[i] = $.ajax(requestA[i]);

       // but we want to push them all onto req
       req.push(requestA[i]);
       req.push(requestB[i]);  
};

// so we need a callback for when they are all finished:
jQuery.when.apply(null, req).then(successFunction, failFunction);
于 2013-08-10T17:18:15.317 回答