async函数-await

发布时间 2023-09-23 21:07:47作者: 唯有风
  1. await 必须用在被 async 修饰的函数内(因为 await 会阻塞代码,但是阻塞的范围要限制在 async 函数执行的范围内)
  2. 箭头函数中,添加 async 函数要写在参数的前面
  3. await 是在异步函数内部使用的关键字,用于等待一个 Promise 对象的解决(成功)或拒绝(失败)。当使用 await 关键字时,它会暂停函数的执行,直到等待的 Promise 对象状态变为解决。然后,它会提取 Promise 的成功结果并将其赋值给一个变量。

具体工作原理如下:

当遇到 await 关键字时,函数的执行会暂停,但不会阻塞整个应用程序或线程。这允许其他任务继续执行,使程序更具有响应性。

await 后面通常跟随一个 Promise 对象。如果 Promise 成功解决,await 表达式将返回成功的结果,并且函数会继续执行。如果 Promise 被拒绝,它将引发一个异常,可以通过 try...catch 块来捕获和处理。

如果 await 后面跟随的不是一个 Promise 对象,而是一个普通的值,那么 JavaScript 会将该值包装成一个已解决的 Promise 对象,然后立即解决,并将该值作为成功的结果返回。这使得 await 可以等待非 Promise 值的完成,但依然会在原地等待。

请注意,尽管 await 在代码中会暂停执行,但它不会阻塞整个应用程序。在等待异步操作完成时,事件循环将继续运行其他任务。

const fn = async () => {
      const res = await 10
      console.log(res)
    }
fn()
// 输出是10