Skip to content
登录后刷题更便捷

async/await 是什么,相比于 Promise 有什么优势?

难度:

async 函数,就是 Generator 函数的语法糖,它建立在 Promise 上,并且与所有现有的基于 Promise 的 API 兼容。

  1. Async — 声明一个异步函数 async function someName(){...}
    • 自动将常规函数转换成 Promise,返回值也是一个 Promise 对象
    • 只有 async 函数内部的异步操作执行完,才会执行 then 方法指定的回调函数
    • 异步函数内部可以使用 await
  2. Await — 暂停异步的功能执行 var result = await someAsyncCall()
    • 放置在 Promise 调用之前,await 强制其他代码等待,直到 Promise 完成并返回结果
    • 只能与 Promise 一起使用,不适用与回调
    • 只能在 async 函数内部使用
优势

代码读起来更加同步,Promise 虽然摆脱了回调地狱,但是 then 的链式调用也会带来额外的阅读负担

Promise 传递中间值非常麻烦,而 async/await 几乎是同步的写法,非常优雅

错误处理友好,async/await 可以用成熟的 try/catchPromise 的错误捕获非常冗余

调试友好,Promise 的调试很差,由于没有代码块,你不能在一个返回表达式的箭头函数中设置断点,如果你在一个.then 代码块中使用调试器的步进(step-over)功能,调试器并不会进入后续的.then 代码块,因为调试器只能跟踪同步代码的『每一步』。

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容