async/await是什么?有哪些优势?
2021-10-16 本文已影响0人
沃德麻鸭
从目前的内部实现来说async其实就是 Generator函数的语法糖。它基于 Promise,并与所有现存的基于Promise 的 API 兼容。
1.async 关键字
①async 关键字用于声明⼀个异步函数(如 async function asyncTask1() {...})
②async 会⾃动将常规函数转换成 Promise,返回值也是⼀个 Promise 对象
③async 函数内部可以使⽤ await
2.await 关键字
① await 用于等待异步的功能执⾏完毕 var result = await someAsyncCall()
②await 放置在 Promise 调⽤之前,会强制async函数中其他代码等待,直到 Promise 完成并返回结果
③await 只能与 Promise ⼀起使⽤
④await 只能在 async 函数内部使⽤
相较于 Promise,async/await有何优势?
1.同步化代码的阅读体验(Promise 虽然摆脱了回调地狱,但 then 链式调⽤的阅读负担还是存在的)
2.和同步代码更一致的错误处理方式( async/await 可以⽤成熟的 try/catch 做处理,比 Promise 的错误捕获更简洁直观)
3.调试时的阅读性, 也相对更友好