Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在循环内延迟向数组添加新对象_Javascript_Jquery_Arrays_Ajax - Fatal编程技术网

Javascript 在循环内延迟向数组添加新对象

Javascript 在循环内延迟向数组添加新对象,javascript,jquery,arrays,ajax,Javascript,Jquery,Arrays,Ajax,我有一个for循环,需要在迭代之间延迟一秒进行AJAX调用。它应该抓住对象并。将其推到阵列上。下面的代码只添加第一个对象。我做错了什么 var maxLoops = 10; var counter = 0; (function processPages() { if(counter++ >= maxLoops) return; setTimeout(function() { //check page count and loop. push all ne

我有一个
for
循环,需要在迭代之间延迟一秒进行
AJAX
调用。它应该抓住对象并
。将其推到阵列上。下面的代码只添加第一个对象。我做错了什么

var maxLoops = 10;
var counter = 0;

(function processPages() {
    if(counter++ >= maxLoops) return;

    setTimeout(function() {
        //check page count and loop. push all new objects into allProducts
        for (var i=1; i <= totalPages; i++){
            $.ajax({ url: '/process.php',
                data: {category: 'sportingGoods', page: i},
                type: 'post',
                success: function(output) {
                    allProducts.push(output);
                }
            })
        }
        }), 1000;
})();
var maxLoops=10;
var计数器=0;
(函数processPages(){
if(counter++>=maxLoops)返回;
setTimeout(函数(){
//检查页面计数和循环。将所有新对象推送到所有产品中

对于(var i=1;i如果您想执行一些ajax调用并在它们之间等待,可以执行以下操作:

(function processPages(i) {
    if (i===totalPages) {
         // all the pages have been fetched, you may
         // use the allProducts array here
         return;
    }
    $.ajax({ url: '/process.php',
        data: {category: 'sportingGoods', page: i},
        type: 'post',
        success: function(output) {
            allProducts.push(output);
            setTimeout(processPages, 1000, i+1);
        }
    })
})(0);

i
totalPages

时,此操作将停止。如果要执行一些ajax调用并在它们之间等待,可以执行以下操作:

(function processPages(i) {
    if (i===totalPages) {
         // all the pages have been fetched, you may
         // use the allProducts array here
         return;
    }
    $.ajax({ url: '/process.php',
        data: {category: 'sportingGoods', page: i},
        type: 'post',
        success: function(output) {
            allProducts.push(output);
            setTimeout(processPages, 1000, i+1);
        }
    })
})(0);
var maxLoops = 10;
var counter = 0;

(function processPages() {
    if (counter++ >= maxLoops) return;
    for (var i = 1; i <= totalPages; i++) {
        setTimeout(function () {
            //check page count and loop. push all new objects into allProducts
            $.ajax({
                url: '/process.php',
                data: {category: 'sportingGoods', page: i},
                type: 'post',
                success: function (output) {
                    allProducts.push(output);
                    if(allProducts.length === totalPages){
                        // call final function  - array filled
                    }
                }
            })
        }, 1000 * i);
    }
})();

i
totalPages

时,此操作将停止。如果要执行一些ajax调用并在它们之间等待,可以执行以下操作:

(function processPages(i) {
    if (i===totalPages) {
         // all the pages have been fetched, you may
         // use the allProducts array here
         return;
    }
    $.ajax({ url: '/process.php',
        data: {category: 'sportingGoods', page: i},
        type: 'post',
        success: function(output) {
            allProducts.push(output);
            setTimeout(processPages, 1000, i+1);
        }
    })
})(0);
var maxLoops = 10;
var counter = 0;

(function processPages() {
    if (counter++ >= maxLoops) return;
    for (var i = 1; i <= totalPages; i++) {
        setTimeout(function () {
            //check page count and loop. push all new objects into allProducts
            $.ajax({
                url: '/process.php',
                data: {category: 'sportingGoods', page: i},
                type: 'post',
                success: function (output) {
                    allProducts.push(output);
                    if(allProducts.length === totalPages){
                        // call final function  - array filled
                    }
                }
            })
        }, 1000 * i);
    }
})();

i
totalPages

时,此操作将停止。如果要执行一些ajax调用并在它们之间等待,可以执行以下操作:

(function processPages(i) {
    if (i===totalPages) {
         // all the pages have been fetched, you may
         // use the allProducts array here
         return;
    }
    $.ajax({ url: '/process.php',
        data: {category: 'sportingGoods', page: i},
        type: 'post',
        success: function(output) {
            allProducts.push(output);
            setTimeout(processPages, 1000, i+1);
        }
    })
})(0);
var maxLoops = 10;
var counter = 0;

(function processPages() {
    if (counter++ >= maxLoops) return;
    for (var i = 1; i <= totalPages; i++) {
        setTimeout(function () {
            //check page count and loop. push all new objects into allProducts
            $.ajax({
                url: '/process.php',
                data: {category: 'sportingGoods', page: i},
                type: 'post',
                success: function (output) {
                    allProducts.push(output);
                    if(allProducts.length === totalPages){
                        // call final function  - array filled
                    }
                }
            })
        }, 1000 * i);
    }
})();
i
totalPages

var maxLoops=10时,此操作将停止;
var maxLoops = 10;
var counter = 0;

(function processPages() {
    if (counter++ >= maxLoops) return;
    for (var i = 1; i <= totalPages; i++) {
        setTimeout(function () {
            //check page count and loop. push all new objects into allProducts
            $.ajax({
                url: '/process.php',
                data: {category: 'sportingGoods', page: i},
                type: 'post',
                success: function (output) {
                    allProducts.push(output);
                    if(allProducts.length === totalPages){
                        // call final function  - array filled
                    }
                }
            })
        }, 1000 * i);
    }
})();
var计数器=0; (函数processPages(){ if(counter++>=maxLoops)返回; 对于(var i=1;i
var maxLoops=10;
var计数器=0;
(函数processPages(){
if(counter++>=maxLoops)返回;
对于(var i=1;i
var maxLoops=10;
var计数器=0;
(函数processPages(){
if(counter++>=maxLoops)返回;
对于(var i=1;i
var maxLoops=10;
var计数器=0;
(函数processPages(){
if(counter++>=maxLoops)返回;



对于(var i=1;i),您的代码似乎与描述完全不匹配。您等待,然后执行几个ajax调用,所有这些调用同时进行,然后就结束了。您的目标是在这些ajax调用之间等待吗?此外,
totalPages
来自哪里?为什么您要
push(响应)
而不是
push(输出)
?可能我混淆了这一点和/或过于复杂。我想进行10次AJAX调用,并将返回的对象推送到一个数组中。我需要API限制带来的延迟。您的for循环应该在timeout函数之外,AJAX调用应该是其中唯一的内容。现在您正在循环1到“totalPages”一次完成。您的代码似乎与描述完全不匹配。您等待,然后执行几个ajax调用,所有这些调用同时进行,然后就结束了。您的目标是在这些ajax调用之间等待吗?此外,
totalPages
从何而来?为什么您要
推送(响应)
而不是
推送(输出)
?可能我混淆了这一点和/或过于复杂。我想进行10次AJAX调用,并将返回的对象推送到一个数组中。我需要API限制带来的延迟。您的for循环应该在timeout函数之外,AJAX调用应该是其中唯一的内容。现在您正在循环1到“totalPages”一次完成。您的代码似乎与描述完全不匹配。您等待,然后执行几个ajax调用,所有这些调用同时进行,然后就结束了。您的目标是在这些ajax调用之间等待吗?此外,
totalPages
从何而来?为什么您要
推送(响应)
而不是
推送(输出)
?可能我混淆了这一点和/或过于复杂。我想进行10次AJAX调用,并将返回的对象推送到一个数组中。我需要API限制带来的延迟。您的for循环应该在timeout函数之外,AJAX调用应该是其中唯一的内容。现在您正在循环1到“totalPages”一次完成。您的代码似乎与描述完全不匹配。您等待,然后执行几个ajax调用,所有这些调用同时进行,然后就结束了。您的目标是在这些ajax调用之间等待吗?此外,
totalPages
从何而来?为什么您要
推送(响应)
而不是
推送(输出)
?可能我混淆了这一点和/或过于复杂。我想进行10次AJAX调用,并将返回的对象推送到一个数组中。我需要API限制带来的延迟。您的for循环应该在timeout函数之外,AJAX调用应该是其中唯一的内容。现在您正在循环1到“totalPages”一次完成。所以不要忘记,
totalPages
实际上是您在示例中创建的
maxLoops
var hmm…仍然返回1个结果您需要等待10秒才能尝试显示结果。@检查
totalPages
?AJAX调用是否全部成功?因为没有失败回调,这将停止任何调用失败时的操作。此外,
setTimeout(processPages,1000,i+1)
仅在
IE>=10
中。我建议
setTimeout(function(){processPages(i+1);},1000)
相反。所以不要忘记,
totalPages
实际上是您在示例中创建的
maxLoops
var hmm…仍然返回1个结果您需要等待10秒才能尝试显示结果。@pauld检查
totalPages
?AJAX调用是否全部成功?因为没有失败回调,这将在任何调用失败时停止操作。
setTimeout(processPages,1000,i+1)
仅在
IE>=10
中。我建议
setTimeout(function(){processPages(i+1);},1000)
相反。所以不要忘记,
totalPages
实际上是您在示例中创建的
maxLoops
var hmm…仍然返回1个结果您需要等待10秒才能尝试显示结果。@pauld检查
totalPages
?AJAX调用是否全部成功?因为没有失败回调,这将在任何调用失败时停止操作。
setTimeout(processPages,1000,i+1)
仅在
IE>=10
中。我建议使用
setTimeout(function(){processPages(i+1);},1000)
。因此不要忘记
totalPages
实际上是您在示例中创建的
maxLoops
变量