ES6 引入了 async 函数,它是一种用于更方便地处理异步操作的语法糖。async 函数返回一个 Promise 对象,允许我们在函数内使用 await 关键字来等待异步操作完成,使得异步代码更加清晰和易读。

以下是 async 函数的基本语法和用法:
async function myAsyncFunction() {
  try {
    // 在 async 函数内使用 await 来等待异步操作完成
    const result1 = await fetchData('url1');
    console.log(result1); // 输出: Data from url1

    const result2 = await fetchData('url2');
    console.log(result2); // 输出: Data from url2

    // 其他异步操作...
  } catch (error) {
    console.error('Error:', error);
  }
}

// 调用 async 函数
myAsyncFunction();

在上述例子中,myAsyncFunction 是一个 async 函数,内部使用了 await 关键字来等待异步操作完成。与 Generator 函数不同,async 函数更简洁,更直观,不需要手动处理 Generator 函数中的迭代器和 next 方法。

async 函数的关键点:

1. 返回 Promise 对象: async 函数总是返回一个 Promise 对象。如果函数内部有返回值,该 Promise 对象的状态会根据返回值是 resolved 还是 rejected 而变化。

2. await 关键字: await 关键字用于等待一个 Promise 对象的解决,它只能在 async 函数内部使用。await 表达式会暂停 async 函数的执行,直到 Promise 解决,然后恢复执行,并返回解决的值。

3. 错误处理: 使用 try...catch 语句来捕获异步操作中的错误,类似于同步代码的错误处理。
// 模拟异步操作
function fetchData(url) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // 模拟异步请求成功
      resolve(`Data from ${url}`);
      // 模拟异步请求失败
      // reject('Failed to fetch data');
    }, 1000);
  });
}

使用 async 函数能够简化异步代码的编写,提高代码的可读性和可维护性。在现代 JavaScript 中,async/await 已经成为处理异步操作的主流方式。


转载请注明出处:http://www.zyzy.cn/article/detail/4680/ES6