async await 本质

  1. 课外知识:所有的具有interator接口的对象都可以通过使用扩展运算符转为数组;
  2. Iterator 接口提供了适合多种数据遍历的机制,for of就是以此为主的遍历方法;

主要包括 next()方法,返回{done:boolean,value:value}

手写一个遍历器:

Class fakeInterator:{

        Construction(arr){

                      This.max = arr.length

                      This.currentIndex = 0

                      This.arr = arr

}

     Next(){

          Return this.currentIndex<this.max?  {  done:false,value: this.arr[this.currentIndex]}: {  done:true,value: undefined}

}

}

······················· ··· · ·· · · · · · ·  · · · · · · · · · · · 毕 ·· · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Yield || yield* 本质上就是一个interator调用器,它会调用后面数据的interator接口

Yield本身没有返回值,它只是一个状态机制管理,所以如果表达式赋值,那么永远返回的都是undefined,但是如果next中带参数,那么就会代替这个yield返回这个参数;

Co模块:自动执行器,用于自动执行generate函数

Async await 就是generator的语法糖,主要的改进在于:

  1. 内置自动执行器
  2. 更好的语义,将* ,yield转为 async await ,更加人性化;
  3. 对象更广泛,co模块中规定yield后面只能跟chunk函数或promise对象,而await可以跟Promise对象和原始数据;
  4. 以前是interator对象现在是promise对象,更方便回调;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值