面试题 -- async await 理解?

Ray Shine 2022/8/2 JavaScript

# 前言

从字面上来看,async异步 的简写,await 则为 等待,所以很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。 async/await 其实是 Generator 的语法糖,它能实现的效果都能用 then 链来实现,它是为优化 then 链而开发出来的。

# 对比 Promise 优势

  • 代码读起来更加同步,Promise 虽然摆脱了回调地狱,但是 then 的链式调⽤也会带来额外的阅读负担。
  • Promise 传递中间值⾮常麻烦,⽽ async/await ⼏乎是同步的写法,⾮常优雅。
  • 错误处理友好,async/await 可以⽤成熟的 try/catchPromise 的错误捕获⾮常冗余。
  • 调试友好, Promise 的调试很差,由于没有代码块,你不能在⼀个返回表达式的箭头函数中设置断点,如果你在⼀个 .then 代码块中使⽤调试器的步进 step-over 功能,调试器并不会进⼊后续的 .then 代码块,因为调试器只能跟踪同步代码的每⼀步。
最后更新时间: 2022/12/6 13:31:05
ON THIS PAGE