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

SB2*_*055 2 javascript jquery knockout.js

在下面的:

ko.utils.arrayForEach(cards, function (card) {
        setTimeout(function () {
            observableData().saveCard(card);
        }, 1000);
    });
Run Code Online (Sandbox Code Playgroud)

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

Aru*_*hny 5

您需要增加超时

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

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