前端通过sleep方法阻断函数的运行

  1. 在 JavaScript 中没有直接的sleep方法(在某些编程语言中有),但可以通过以下几种方式来模拟实现类似阻断函数运行的效果
    • 使用setTimeout函数(异步延迟执行)
      • 基本原理是设置一个定时器,在指定的时间后执行某个函数。在这个等待的过程中,函数的后续代码可以继续执行其他任务。例如:

收起

javascript

复制

function delayFunction() {
  console.log("函数开始");
  setTimeout(() => {
    console.log("延迟后的操作");
  }, 2000);
  console.log("函数继续执行其他部分");
}
delayFunction();

  • 在这个例子中,setTimeout里面的函数会在 2 秒(2000 毫秒)后执行。当delayFunction被调用时,它会先打印"函数开始",然后设置定时器,接着打印"函数继续执行其他部分"。2 秒后,setTimeout中的函数被触发,打印"延迟后的操作"
  • 使用async/await结合PromisesetTimeout(异步等待)
    • 可以创建一个返回Promise的函数,在Promise中使用setTimeout来模拟延迟。然后在async函数中使用await来等待这个Promise的完成。示例如下:

收起

javascript

复制

function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}
async function asyncDelayFunction() {
  console.log("异步函数开始");
  await sleep(3000);
  console.log("异步函数延迟后的操作");
}
asyncDelayFunction();

  • 在这里,sleep函数返回一个PromiseasyncDelayFunction是一个async函数。当执行到await sleep(3000)时,函数会暂停执行,等待Promiseresolve(也就是setTimeout中的resolve被调用,这个在 3 秒后发生)。然后再继续执行后面的console.log("异步函数延迟后的操作");,实现了类似阻断的效果,但是在等待期间,JavaScript 的事件循环仍然可以处理其他异步任务。

猜你喜欢

转载自blog.csdn.net/2301_78133614/article/details/143504855