常考:async/await 怎么用?

2,839 阅读1分钟

2020年3月16日
《每日一题系列🚀》
作者:王二狗
博客:掘金思否知乎简书CSDN
点赞再看,养成习惯,每日一题系列会一直更新下去,你们的支持是我持续分享的最大动力😘

这里首先要说一下为什么会出现asyncawait,异步编程的解决方案首先是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)
}

告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!

文章中如有不对的地方,欢迎小伙伴们多多指正。

谢谢大家~ 💘