小编mor*_*wsy的帖子

如何取消 javascript 等待睡眠?

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

5
推荐指数
1
解决办法
710
查看次数

标签 统计

javascript ×1