关于async..await

96 阅读1分钟

JavaScript 中的 async 和 await 是用于处理异步操作的关键字。让我们一步步理解它们的用法:

  1. async 函数

    • async 函数是使用 async 关键字声明的函数。

    • 它返回一个 Promise 对象,即使你在函数中直接返回一个非 Promise 对象,它也会被自动封装成 Promise

    • 异步函数的语法和结构更像是标准的同步函数,但实际上通过事件循环异步执行。

    • 示例:

      JavaScript

      async function demoFunc() {
          return new Promise((resolve, reject) => {
              resolve('hello world');
          });
      }
      
  2. await 关键字

    • await 只能用在 async 函数内部,否则会报错。

    • 它通常用于等待一个返回 Promise 的函数执行完毕,并获取其结果。

    • 示例:

      JavaScript

      async function getName() {
          let name = await printName('jack');
          console.log('hello', name);
      }
      
  3. 错误处理

    • 如果 await 后的 Promise 抛出错误,你可以使用 try 和 catch 来捕获异常。

    • 示例:

      JavaScript

      async function getName() {
          try {
              let name = await printName('jack');
              console.log('hello', name);
          } catch (err) {
              console.log(err, '被catch抓到啦');
          }
      }
      
  4. 多个异步操作的顺序执行

    • 使用 await 可以让异步操作按照顺序执行,避免了繁琐的链式调用。

    • 示例:

      JavaScript

      async function doThis() {
          const time1 = 1000;
          const time2 = await step1(time1);
          const time3 = await step2(time2);
          const result = await step3(time3);
          console.log(`result is ${result}`);
      }
      
    • 这样的代码更易读,让你感觉像在写同步代码一样