美文网首页
ES6: Generator函数

ES6: Generator函数

作者: 打不过就加入他 | 来源:发表于2016-09-04 21:32 被阅读21次

简介

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()

相关文章

  • 03-JavaScript-Generator异步编程

    Generator 概念 Generator 函数是 ES6 提供的一种异步编程解决方案 Generator 函数...

  • co库的简易实现

    generator Generator 函数是 ES6 提供的一种异步编程解决方案。 执行generator函数会...

  • JavaScript异步处理——Generator及async函

    Generator Generator 函数是 ES6 提供的一种异步编程解决方案。Generator函数在fun...

  • Generator函数介绍

    什么事Generator函数 Generator函数是ES6提供的一种异步编程解决方案, 可以把Generator...

  • 20.ES6中Generator生成器

    Generator是ES6的生成器1、Generator 函数是 ES6 提供的一种异步编程解决方案,在函数中可以...

  • Generator 函数

    Generator Generator 函数是 es6 中的新的异步编程解决方案,本节仅讨论 Generator ...

  • Generator函数实现斐波那契数列

    ES6 中 generator生成器函数 特点: 调用generator函数返回一个迭代器(iterator)对象...

  • Generator函数

    Generator 函数是 ES6 提供的一种异步编程解决方案。调用 Generator 函数后,该函数并不执行,...

  • 关于es6新属性yield

    关于es6新属性yield yield是Generator函数中中断函数返回的一个属性。Generator函数即一...

  • redux-saga学习笔记

    1.Generator函数 Generator函数时ES6提供的一种异步编程解决方案,函数调用后,函数并不执行,返...

网友评论

      本文标题:ES6: Generator函数

      本文链接:https://www.haomeiwen.com/subject/qyolettx.html