推荐答案
在 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 线程。