沃梦达 / IT编程 / 前端开发 / 正文

javascript里模拟sleep(两种实现方式)

下面是JavaScript模拟sleep的两种实现方式的详细攻略。

下面是JavaScript模拟sleep的两种实现方式的详细攻略。

方式一:使用Promise对象

  1. 定义async函数:
async function sleep(duration) {  
  return new Promise(resolve => setTimeout(resolve, duration))  
}
  1. 将需要延迟执行的代码放在async函数中:
async function doSomething() {  
  console.log('start to do something...')  
  await sleep(2000)  
  console.log('after sleep 2 seconds...')  
}

在上述代码中,doSomething函数包含一个需要延迟执行2秒的代码,await sleep(2000)代码使用await关键字调用Promise对象的resolve函数来模拟实现sleep。

  1. 调用async函数:
doSomething()

运行上述代码,可以看到控制台输出:

方式二:使用setTimeout函数进行递归调用

  1. 定义sleep函数:
function sleep(timeout) {  
  return new Promise(resolve => {    
    setTimeout(resolve, timeout);  
  })  
}
  1. 定义延迟执行的代码块:
function doSomething() {  
  console.log('start to do something...')  
  sleep(2000).then(() => {  
    console.log('after sleep 2 seconds...')  
  });  
}

这里也是需要延迟执行的代码块,其中调用了sleep函数来实现sleep操作。

  1. 调用执行代码块的函数:
doSomething();

运行上述代码,可以看到控制台输出:

总结:

以上便是两种JavaScript模拟sleep的方式。使用Promise对象可以简化代码结构,避免了回调函数嵌套;而通过setTimeout递归调用实现的方式,则更为适用于一些特殊情况,例如需要实现循环执行某个代码块并且需要sleep功能的操作。

本文标题为:javascript里模拟sleep(两种实现方式)