在下面的:
ko.utils.arrayForEach(cards, function (card) {
setTimeout(function () {
observableData().saveCard(card);
}, 1000);
});
这应该为阵列中的每张卡等待一秒钟,但它只等待一秒钟,然后通过阵列爆炸。我怎样才能达到预期的行为?
在下面的:
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);
});
由于arrayForEach
看起来不像给出项目的索引,因此您需要维护一个单独的索引
ko.utils.arrayForEach(cards, function (card) {
var timeout = setTimeout(function () {
observableData().saveCard(card);
}, 1000);
clearTimeout(timeout);
});
尝试
var timer;
ko.utils.arrayForEach(cards, function (card)
{
window.clearTimeout(timer);
timer=window.setTimeout(function () {
observableData().saveCard(card);
}, 1000);
});