ES6: Generator函数

简介

Generator函数是一个函数的内部状态的遍历器,也就是说,Generator函数是一个状态机

特征

  • function与函数名之间有个*号。

  • 函数体内使用yield语句,定义变利器的每个成员,即不同的内部状态。

function * helloGenerator(){
   yield 'status01';
   yield 'status02';
   return 'ending'
}
  • next调用。调用Generator函数,返回一个部署Iterator接口的遍历对象,用来操作内部指针。会反悔一个有着 value和done两个属性的对象。value属性表示当前内部状态的值,done饰一个boolean值,表示是否遍历结束

  • 使用for of循环可以自动遍历generator函数,一旦next()方法返回的为true就会停止,且不包含该返回对象,如下的例子,6不会在for of遍历中

function *number(){
  yield 1;
  yield 2;
  yield 3;
  yield 4;
  yield 5;
  return 6 
}
for(let item of number){
  console.log(item)
}
//1,2,3,4,5,

说了这么多,generator在实际有什么作用呢

  • 痛苦的回调
    如果有个操作,需要调用更新接口,然后再调用接口2来计算总量,代码可能会写成这样
$.ajax({
  success: function(data){

    $.ajax({
      success: function(data){
          if(data&&data.code = 0){
            alert('成功了')
          }
        }
    })
}
})

现在有了generator了

function *2ajax(){
  var value = yield (function(){})();
  var value = yield (function(){})()
}
var ge = 2ajax();
ge.next()
ge.next()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文作者就是我,简书的microkof。如果您觉得本文对您的工作有意义,产生了不可估量的价值,那么请您不吝打赏我,...
    microkof阅读 23,783评论 16 78
  • 在此处先列下本篇文章的主要内容 简介 next方法的参数 for...of循环 Generator.prototy...
    醉生夢死阅读 1,463评论 3 8
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍...
    呼呼哥阅读 1,094评论 0 4
  • 【昨日三句话】 1、健身第4天,继续加油。 2、阅读销售书籍,直接把一段话给敲下来了。 3、集中注意力,专注于一件...
    爱游泳的Danny阅读 157评论 2 0
  • 今天,我们班举行了班里最大的一次骑行。 这次骑行,是由程立涛、高乾翔和王哲精心组织的,早在星期五,我就早早把作业写...
    petermeng阅读 625评论 0 4