✨es6新增数据类型generator的基本用法和他的迭代器委托

28 篇文章 0 订阅
15 篇文章 0 订阅

generator

介绍 => es6中新增的数据类型generator函数 需要在函数申明的时候在函数名字和function之间加上*号,yield可以去暂停函数的执行,可以执行多次.

1.generator基本用法

 function *generator(){
     console.log(1);
     yield; // 执行碰到yield 会去执行暂停
     console.log(2);
     yield;
     console.log(3);
     return 10;
 }
 const str = generator();
 console.log(str.next())
 
 // 打印结果:
 // 1
 // {value: undefined, done: false}
 // value的值是yield后面所赋的值 done是一个布尔值代表的是有没有执行完

2.next()里面也可以传参

  function *generator(){
      console.log(1);
      // 这里是的a1是接收的next()传进来的参数222
      const a1 = yield 5;
      console.log(a1);
      yield;
      console.log(3);
      return 10;
  }
  const str = generator();
  console.log(str.next(111)) //第一次的传参111 是没有意义的,函数里也拿不到结果
  console.log(str.next(222)) //第二次传参的结果才会在第一次yield结束后拿到
  //执行结果:
  //1
  //{value: 5, done: false} //value为5 因为yield 后面赋值了为5
  //222
  //{value: undefined, done: false}

3.generator的迭代器委托

  function *generatorArry() {
      var arry = ['这','个','世','你','好'];
      var idx = 0;
      while(idx < arry.length) yield arry[idx++];
  }
  function *Iterator() {
      yield "我是被第一次执行...";
      // 这里可以暂停去执行generatorArry这个函数,当执行完了 done会为true 表示执行完毕
      yield *generatorArry();
  }
  var ite = Iterator();
  console.log(ite.next().value);
  console.log(ite.next().value);
  console.log(ite.next().value);
  console.log(ite.next().value);
  // 运行结果:
  // 我是被第一次执行...
  // 这
  // 个
  // 世
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小朋友120

谢谢你拉近我与星星的距离

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值