以下内容:
ko.utils.arrayForEach(cards, function (card) {
setTimeout(function () {
observableData().saveCard(card);
}, 1000);
});
对于阵列中的每张卡,这应该等待一秒钟,但它只等待一秒钟,然后通过阵列爆炸。我怎样才能达到预期的行为?
答案 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);
});