async
和 await
是 JavaScript 中用于处理异步操作的关键字。
async
关键字用于声明一个函数为异步函数,它会返回一个 Promise 对象。在异步函数中,可以使用 await
关键字来等待一个异步操作的完成,并以同步的方式获取其结果。
await
关键字只能在异步函数内部使用,它可以放在一个返回 Promise 的表达式前面,暂停异步函数的执行,直到该 Promise 对象变为 resolved 状态并返回结果。使用 await
关键字可以使异步代码看起来像同步代码,更易于理解和编写。
async
和 await
的作用主要有以下几点:
-
简化异步代码:
async
和await
可以使异步代码的编写和理解更加简单和直观,避免了回调地狱和 Promise 链式调用的复杂性。 -
同步风格的错误处理:使用
try-catch
结构可以捕获异步操作中的错误,并以同步的方式进行处理,提高代码的可读性和可维护性。 -
顺序执行异步操作:使用
await
关键字可以按照代码的顺序依次执行异步操作,避免了回调函数或 Promise 链式调用中的嵌套和难以理解的代码结构。 -
提供更好的代码组织和可读性:
async
和await
可以使异步代码的结构更加清晰和有序,使代码更易于组织、维护和阅读。
需要注意的是,await
只能在异步函数内部使用,而且只能等待返回 Promise 的异步操作。如果在普通函数中使用 await
,会导致语法错误。另外,使用 await
时需要将其放在 async
函数中,否则会报错。
示例代码:
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
上述代码中的 fetchData
函数是一个异步函数,使用 await
关键字等待 fetch
请求返回结果,并处理成功和错误情况。这样,我们可以以同步的方式编写和处理异步操作。