2

在下面的:

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

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

4

3 回答 3

5

您需要增加超时

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

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

于 2013-07-22T04:20:56.370 回答
1
ko.utils.arrayForEach(cards, function (card) {
     var timeout =   setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
      clearTimeout(timeout);
    });
于 2013-07-22T04:22:06.537 回答
1

尝试

var timer;
ko.utils.arrayForEach(cards, function (card) 
{
      window.clearTimeout(timer);
        timer=window.setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
    });
于 2013-07-22T04:22:57.653 回答