2020年3月16日
《每日一题系列🚀》
作者:王二狗
博客:掘金、思否、知乎、简书、CSDN
点赞再看,养成习惯,每日一题系列会一直更新下去,你们的支持是我持续分享的最大动力😘
这里首先要说一下为什么会出现async
和await
,异步编程的解决方案首先是promise
,但是由于promise
里面的.then()
.catch()
的使用也导致代码非常难看,嵌套也很深,所以async/await
就出来了,它是建立在promise
之上的。
async
就是将函数返回值使用 Promise.resolve()
包裹了下,和 then
中处理返回值一样,并且 await
只能配套 async
使用
async function test() {
let value = await sleep()
}
进一步说,async
函数完全可以看作多个异步操作,包装成的一个 Promise
对象,而await
命令就是内部then
命令的语法糖,用同步的书写方式实现了异步的代码。
当然也存在一些缺点,因为 await
将异步代码改造成了同步代码,如果多个异步代码没有依赖性却使用了 await
会导致性能上的降低。
async function test() {
// 以下代码没有依赖性的话,完全可以使用 Promise.all 的方式
// 如果有依赖性的话,其实就是解决回调地狱的例子了
await fetch(url)
await fetch(url1)
await fetch(url2)
}
告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!
文章中如有不对的地方,欢迎小伙伴们多多指正。
谢谢大家~ 💘