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

时间:2013-07-22 04:17:43

标签: javascript jquery knockout.js

以下内容:

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

对于阵列中的每张卡,这应该等待一秒钟,但它只等待一秒钟,然后通过阵列爆炸。我怎样才能达到预期的行为?

3 个答案:

答案 0 :(得分:4)

您需要增加超时

var idx = 1;
ko.utils.arrayForEach(cards, function (card) {
    setTimeout(function () {
        observableData().saveCard(card);
    }, (idx++) * 1000);
});

由于arrayForEach看起来不像给出项目的索引,因此需要维护一个单独的索引

答案 1 :(得分:1)

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

答案 2 :(得分:1)

尝试

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