Ari*_*ant 3 javascript iframe jquery settimeout
我有以下代码来附加元素数组中的iframe,批量大小为10,每批时间间隔为10秒.批处理是一个数组,其中包含一个JSON对象,其中包含每个批处理的开始和结束索引.Append函数将带有代码的iframe附加到DOM.
当前行为: JS等待10秒并一起调用追加功能,同时一次追加所有iframe,而不是每批等待10秒.
预期行为: JS在附加每个批处理或每个追加函数调用之前等待10秒.
batches.forEach(function (x) {
setTimeout(function () {
append(x, elements);
console.log('appending'+x);
}, 10000);
});
Run Code Online (Sandbox Code Playgroud)
知道为什么会发生这种情况吗?
setTimeout 不会暂停执行,因此您的代码相当于
setTimeout(..., 10000)
setTimeout(..., 10000)
setTimeout(..., 10000)
// etc
Run Code Online (Sandbox Code Playgroud)
其中每个超时调用设置为在大约相同的时间执行,即10秒后.
您将不得不在每次迭代中增加超时.像这样......
batches.forEach((x, i) => { // where "i" is the current, zero-based index
setTimeout(() => {
// etc
}, 10000 * (i + 1))
})
Run Code Online (Sandbox Code Playgroud)