推荐答案
在 async 函数中使用 await 的语法如下:
async function example() {
try {
const result = await someAsyncFunction();
console.log(result);
} catch (error) {
console.error('Error:', error);
}
}解释:
async关键字用于声明一个异步函数,该函数会自动返回一个Promise。await关键字用于等待一个Promise完成并返回其结果。它只能在async函数内部使用。- 如果
await后面的Promise被拒绝(rejected),则会抛出异常,可以使用try...catch来捕获异常。
本题详细解读
1. async 函数
async 函数是 ES2017 引入的语法糖,用于简化异步操作。它使得异步代码看起来像同步代码,但实际上是基于 Promise 的。
async function fetchData() {
return 'Data fetched';
}async函数总是返回一个Promise。如果函数返回一个值,Promise将被解析为该值;如果函数抛出异常,Promise将被拒绝。
2. await 关键字
await 关键字用于暂停 async 函数的执行,直到 Promise 完成(resolved 或 rejected)。
async function example() {
const data = await fetchData();
console.log(data); // 输出: Data fetched
}await只能在async函数内部使用。- 如果
await后面的Promise被拒绝,await会抛出异常,可以使用try...catch来捕获。
3. 错误处理
在 async 函数中,可以使用 try...catch 来捕获 await 表达式中可能抛出的错误。
async function example() {
try {
const data = await fetchData();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}- 如果
fetchData返回的Promise被拒绝,catch块会捕获错误并处理。
4. 并行执行多个异步操作
如果需要并行执行多个异步操作,可以使用 Promise.all。
async function example() {
try {
const [result1, result2] = await Promise.all([fetchData1(), fetchData2()]);
console.log(result1, result2);
} catch (error) {
console.error('Error:', error);
}
}Promise.all接受一个Promise数组,并返回一个新的Promise,该Promise在所有Promise都完成时解析为一个结果数组。
5. 注意事项
await只能在async函数中使用,否则会抛出语法错误。await会阻塞async函数的执行,直到Promise完成,但不会阻塞整个 JavaScript 线程。