Generator

Generator:生成器函数(ES6新增的)
Iterator:迭代器(for of只能遍历可被迭代的值)

生成器对象是由一个 generator function 返回的,并且它符合可迭代协议和迭代器协议。生成器函数返回的结果是一个Generator对象,平时都是搭配yield来使用


   function* func(){
      console.log(1);
      yield 'A';
      console.log(2);
      yield 'B';
      console.log(3);
      yield 'C';

     }
 let gt = func();//输出Generator { } ,创建一个生成器对象,但是方法中的代码还没有执行,基于gt.next()执行函数

 console.log(gt.next()); //=>{value: 'A',done:false}在执行的时候遇到一次yield就会暂停一次,返回的对象中value存储的是yield的结果,done存储是否已经把代码都执行完
 console.log(gt.next()); //=>{value: 'B',done:false}
 console.log(gt.next()); //=>{value: 'C',done:false}
 console.log(gt.next()); //=>{value: undefined,done:true}

方法

  1. Generator.prototype.next() 返回一个由 yield表达式生成的值。
  2. Generator.prototype.return() 返回给定的值并结束生成器。
  3. Generator.prototype.throw() 向生成器抛出一个错误。
posted @ 2021-06-20 21:12  某某雅  阅读(218)  评论(0)    收藏  举报