- async、await 的特点,优点和缺点,await 的原理是什么?
- 一个函数如果加上 async 那么该函数就会返回一个 Promise。
async function fun1() {
return '666'
}
console.log(fun1()) // Promise {<resolved>: "666"}
async 就是将函数的返回值用 Promise.resolve() 包裹了一下,和 then 中处理返回值一样,并且 await 只能配合 async 使用。
async 和 await 作为异步的终极解决方案,相比 Promise
- 优势
在处理 then 的调用链的时候,能更准确清晰的写出代码,同时优雅的解决回调地狱的问题。 - 缺点
因为 await 代码将异步代码改造成了同步代码,如果多个代码没有依赖性却使用了 await 会导致性能上的降低。
async function fun1() {
// 下述调用如果没有依赖性的话完全可以使用 Promise.all 的方式来替换提升性能
// 下述代码如果有依赖性,就是解决回调地狱的例子了
await fetch(url1)
await fetch(url2)
await fetch(url3)
await fetch(url4)
}
await 在内部实现了 Generator,其实 await 就是 Generator 和 Promise 的语法糖,且内部实现了自动执行 Generator。
网友评论