对 async/await 的理解,分析内部原理

本文探讨了JavaScript中的异步模式发展,从回调函数、Promise到generator/yield,最终聚焦于async/await。async/await作为generator的语法糖,解决了回调地狱问题,同时简化了异步代码的阅读和编写。它内部基于Promise,但允许在async函数中使用await,使得错误处理更加直观。需要注意的是,await只能在async函数中使用,且一个async函数中如有await出现错误,后续await将不再执行,可通过try/catch进行异常处理。
摘要由CSDN通过智能技术生成
js的异步模式从回调函数->Promise->generator/yield->async/await

回调函数和Promise都有回调地狱的问题,代码不利于阅。generator/yield虽然解决了回调地狱的问题,但是需要开发者自己写迭代器的逻辑。
而async/await即解决了回调地狱的问题,同时将 Generator 函数和自动执行器,封装在一个函数中,它其实就是generator的语法糖。只是开发者不用再关心内部复杂的实现逻辑

注意点:

  1. await命令只能用在async函数之中,如果用在普通函数,会报错
  2. async函数的返回值是 Promise 对象更方便使用
    当 async 函数中只要一个 await 出现 reject 状态,则后面的 await 都不会被执行,可以添加 try/catch来捕获异常

原理:

async/await会被编译成generator+promise的语法代码

   async function fn() {
   
   // ...

等价于

  function fn() {
   
   return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值