javascript 中 sleep 函数最常见的实现是在 setTimeout 解析后返回 Promise:
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
Run Code Online (Sandbox Code Playgroud)
我有带有await sleep的for循环,以防止它执行得太快,例如不要太快地请求xhr。我在其他地方还有一个 isBreak 标志来告诉我何时停止 for 循环。然而,我遇到的问题是,当我中断 for 循环时,之前的等待睡眠已经执行并阻止了 for 循环。有没有更好的方法来打破 for 循环并立即终止等待睡眠?
const items = [];
let isBreak = false; // Somewhere else in the application
for (const item of items) {
if (isBreak) break;
// Do something, like xhr request
await sleep(15000); // 15 seconds sleep
if (isBreak) break;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我提前发出信号
javascript ×1