我有以下代碼來追加批量大小爲10的元素數組中的iframe,每個批次的時間間隔爲10秒。批處理是一個數組,它有一個JSON對象,每個批處理都有開始和結束索引。追加功能將帶有代碼的iframe附加到DOM。setTimeout函數意外的行爲
當前行爲: JS等待10秒鐘,並一起追加所有iframe,同時調用追加函數,而不用等待每批10秒。
預期行爲: JS在追加每個批處理或每個追加函數調用之前等待10秒鐘。
batches.forEach(function (x) {
setTimeout(function() {
append(x, elements);
console.log('appending'+x);
}, 10000);
});
任何想法爲什麼會發生這種情況?
相關:https://stackoverflow.com/q/45767325/5894241 – Nisarg
你的foreach循環只是遍歷所有元素而不停止。所以它會很快爲每個元素創建一個setTimeout。然後他們等待10秒鐘,然後立刻執行所有操作。如果你希望他們在不同的時間執行,那麼你必須給他們每個不同的延遲。 – RJM