Promise

Promise 是一个对象,表示异步操作的完成或者失败及其输出值。

Promise 可以处于三种状态:pending,表示初始状态,在操作成功完成时完成,以及拒绝,表示操作失败。

异步/等待

await 操作符使异步函数的执行暂停,直到 Promise 被解决,并在 Promise 完成后恢复执行。
await 的值是已完成的 Promise 的值。
在拒绝 Promise 的情况下, await 会抛出被拒绝的值。
如果 await 后面的表达式的值不是一个 Promise,它就会变成一个已解决的 Promise。

JavaScript 的 Sleep()

编程语言有让程序停止几秒或者几毫秒的方法。
例如,如果我们使用 PHP 语言,我们应该调用 sleep() 函数使程序暂停执行 3 秒。

尽管 JavaScript 没有sleep函数,但由于 ES2015 中引入了 Promise 和 async/await,我们最终可能会导致该函数进入睡眠状态。

JavaScript 不会像其他语言那样暂停整个程序的执行。
它只会使函数休眠。

const sleep = (ms) => {
  return new Promise(resolve => setTimeout(resolve, ms))
}

接下来,我们可以使用 then 回调:

sleep(1000).then(() => {
  //some things
})

或者在异步函数中使用它:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
  </head>
  <body>
    <script>
      function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
      }
      const doSomething = async() => {
        console.log('Wait for 2 seconds!');
        await sleep(2000)
        console.log('After 2 seconds!');
      }
      doSomething();
    </script>
  </body>
</html>

await 操作符只能在 async 函数中使用,并且只能暂停当前的 async 函数。

日期:2020-06-02 22:16:27 来源:oir作者:oir