js的几种sleep函数

不少编程语言里都有sleep(),delay()等方法,它能让咱们的程序不那么着急的去执行下一步操做,而是延迟、等待一段时间。软件开发中常常会遇到须要这样的函数,好比等待几分钟去检查某一事件是否发生。JavaScript里有setTimeout()方法来实现设定一段时间后执行某个任务,但写法很丑陋,须要提供回调函数:编程

setTimeout(function(){ alert("Hello"); }, 3000);
复制代码

JavaScript Promise API是新出现了一个API,借助 Promise,咱们能够对setTimeout函数进行改良,下面就是把setTimeout()封装成一个返回Promise的sleep()函数。bash

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

// 用法
sleep(500).then(() => {
    // 这里写sleep以后须要去作的事情
})
复制代码

你会发现,这种写法很优雅,很像其它编程语言里的延迟、等待函数。Promise API使咱们避免传入回调函数,咱们在实现中还使用了ES6中的箭头(arrow)函数。async

这里须要提到的一个问题是,这个sleep()在执行的时候是“block”程序的继续执行的。它不是同步的。若是想让它同步执行,不妨碍执行以后的代码,咱们能够使用 async/await 关键字。编程语言

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

(async function() {
  console.log('Do some thing, ' + new Date());
  await sleep(3000);
  console.log('Do other things, ' + new Date());
})();
复制代码

慢慢更新函数

相关文章
相关标签/搜索