推荐答案
async/await
是 Promise
的语法糖,它使得异步代码的编写和阅读更加直观和简洁。async
函数总是返回一个 Promise
对象,而 await
关键字用于等待一个 Promise
对象的解决(resolve)或拒绝(reject),并返回解决后的值。
本题详细解读
Promise
的基本概念
Promise
是 JavaScript 中处理异步操作的一种机制。它表示一个异步操作的最终完成(或失败)及其结果值。Promise
有三种状态:
- Pending(进行中):初始状态,既不是成功,也不是失败。
- Fulfilled(已成功):表示操作成功完成。
- Rejected(已失败):表示操作失败。
async/await
的基本概念
async/await
是 ES2017 引入的语法,用于简化 Promise
的使用。async
关键字用于声明一个异步函数,而 await
关键字用于等待一个 Promise
的解决。
async
函数:使用async
关键字声明的函数会自动返回一个Promise
对象。如果函数内部返回一个值,Promise
将会以该值解决;如果函数内部抛出异常,Promise
将会以该异常拒绝。await
表达式:await
关键字只能在async
函数内部使用。它会暂停async
函数的执行,等待Promise
解决,然后继续执行并返回解决后的值。如果Promise
被拒绝,await
会抛出异常,可以通过try/catch
捕获。
async/await
与 Promise
的关系
async
函数返回Promise
:无论async
函数内部返回什么,它总是返回一个Promise
对象。如果返回的是非Promise
值,它会被自动包装成一个已解决的Promise
。await
等待Promise
解决:await
关键字会暂停async
函数的执行,直到Promise
解决。如果Promise
被解决,await
返回解决后的值;如果Promise
被拒绝,await
抛出异常。错误处理:在
async/await
中,可以使用try/catch
来捕获Promise
被拒绝的情况,这与Promise
的.catch()
方法类似。
示例代码
-- -------------------- ---- ------- -- -- ------- -------- ----------- - ------ --- ----------------- ------- -- - ------------- -- - ------------- ---------- -- ------ --- - --------------------- -- - ------------------ -- --- ---- ------- -------------- -- - --------------------- --- -- -- ----------- ----- -------- ---------------- - --- - ----- ---- - ----- ------------ ------------------ -- --- ---- ------- - ----- ------- - --------------------- - - -----------------
在这个示例中,fetchDataAsync
函数使用 async/await
语法来等待 fetchData
返回的 Promise
解决,并处理可能的错误。