在JavaScript中,最常见的sleep函数实现方式是在setTimeout解析后返回一个Promise:
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
我有一个for循环,其中使用await sleep来使其执行速度不快,例如不会太快地请求xhr。我还有一个isBreak标志在其他地方告诉我何时停止for循环。但是,我的问题是,当我打破for循环时,先前的await sleep已经执行,并且正在阻止for循环的执行。有没有更好的方法来打破for循环并立即终止await sleep?
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;
}
有没有一种方法可以提前发出信号?
setInterval
并取消该间隔? - Touffy