generator 函数

可以看做一个状态机, 生成的是一个迭代器对象, 可以用来遍历状态机里面的各种状态

创建方式

  在函数名前面添加 * , 内部使用 yeild 来标注状态

 

特性

  yield 只能在 generator 中, 必须是在直接中, 不能是在间接中 

     可以被 for of 直接遍历

  扩展运算符, 结构赋值, Array.from 内部都是调用的迭代器, 因此都可以使用 generator

  实例继承generator原型上的函数

  实例拿不到generator上的 this

  不能和 new 一起使用

  两个 yield 之间并不会判断异步是否完成, 而是直接执行, 需要自己判断,然后根据返回值来决定是否执行下一步

 

使用

  用来写迭代器函数, 比较方便, 有点类似语法糖

  next 可以作为 yeild 表达式的返回值, (注意不是 next 的返回值) 这样就可以在执行过程中改变 generator 的状态

  可以作为一种协成的实现, 多个函数当做多个线程

  异步操作的同步化表达 (yield 可以分开回调函数和异步操作)

  可以作为一种数据结构, 直接在其中返回不同的函数

  

实例方法

  next

  throw,  抛出错误, 在函数内铺货

  return 终结函数

  

 

  

posted on 2019-04-30 10:01  潇潇雨歇_山色空濛  阅读(127)  评论(0编辑  收藏  举报