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
並不像給項目的索引,你需要保持一個單獨的索引
謝謝你,阿倫編號1 – SB2055
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);
});
這是真的 – SB2055
它正等待陣列中每個項目一秒。您剛剛爲每個項目同時啓動了計時器。在第一個項目發生後,爲下一個項目設置一個計時器。或者,在每個回調中設置一個時間間隔和循環。 – Brad