Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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

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 如何对数组中的每个项使用setTimeout?_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 如何对数组中的每个项使用setTimeout?

Javascript 如何对数组中的每个项使用setTimeout?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,在以下方面: ko.utils.arrayForEach(cards, function (card) { setTimeout(function () { observableData().saveCard(card); }, 1000); }); 这应该为阵列中的每一张卡等待一秒钟,但它只是等待一秒钟,然后在阵列中爆炸。如何实现预期行为?您需要增加超时时间 var idx = 1; ko.utils.arrayForEach(

在以下方面:

ko.utils.arrayForEach(cards, function (card) {
        setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
    });

这应该为阵列中的每一张卡等待一秒钟,但它只是等待一秒钟,然后在阵列中爆炸。如何实现预期行为?

您需要增加超时时间

var idx = 1;
ko.utils.arrayForEach(cards, function (card) {
    setTimeout(function () {
        observableData().saveCard(card);
    }, (idx++) * 1000);
});
由于
数组foreach
看起来不像是给出项目的索引,因此您需要维护一个单独的索引

ko.utils.arrayForEach(cards, function (card) {
     var timeout =   setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
      clearTimeout(timeout);
    });

它正在为数组中的每个项目等待一秒钟。您刚刚同时启动了每个项目的计时器。第一个项目发生后,为下一个项目设置计时器。或者,设置一个时间间隔,在每次回调时循环。你们是三胞胎还是什么的?我刚刚注意到了…这只是coincidence@kadumel我不知道这是怎么发生的,但我想大多数叫阿伦的人都是programmers@kadumel..ohh这是不可能的。。。?
var timer;
ko.utils.arrayForEach(cards, function (card) 
{
      window.clearTimeout(timer);
        timer=window.setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
    });