美文网首页
ES6之Generator函数

ES6之Generator函数

作者: 我家的猫子在哪里 | 来源:发表于2017-09-13 15:32 被阅读0次

      Generator函数,ES6新增的函数,通过这个函数可以控制函数的执行步骤,也有说这是一个状态机,内部封装多个状态。执行Generator函数,不会立即这个函数方法,会返回一个遍历对象,可以依次遍历到函数中的每个状态或者说是每个特意要执行的步骤,至于这个返回的对象呢是指向函数内部表达式运行的开始,通过每次调用next依次执行到里面每步特别标注的步骤--yield注明或者return,而每次调用next方法返回的对象包含value(内部状态的值,yield后面的那个值)done(表示是否遍历结束或者说是里面的特别的步骤是否运行结束)。

      Generator函数具体的表现形式:function 和函数名之间有个*,函数体内部的表达式包含 yield去定义一个特别表明的步骤(状态)。对于*的位置没有特别要求在function和函数名之间都行;yield放入别的函数表达式中必须加括号,但是作为参数声明或者变量赋值就不需要,next运行时碰到yield就会停止后续步骤执行,并返回yield后面那个表达式作为value,再次调用next接着执行直到遇到yield,如果遇不到yield的话 return也行,并将return后面的表达式作为value值,如果啥都遇不上就返回value是个undefined。generator函数的简写形式就是在函数名前加个*号,* fun

     Generator函数的方法:next,依次运行到每个特殊注明的步骤,可携带一个参数表示上一个yield表达式返回的值(因此第一次next不用跟参数值从第二个next开始),通过这些个参数可以不同步骤阶段的不同的值进行不同的运算;for...of..遍历generator函数中的yield表达式。Generator函数返回的对象都包含一个throw方法抛出然后在Generator函数中catch的错误,如果函数内部没有catch而外部有就外部catch,如果都没有函数就报错,并且自带的throw方法之后自动执行一次next,但是如果在外部捕获的错误,那么generator函数就会停止执行。Generator函数的return方法(某个参数)结束函数执行并返回某个值或者undefined,如果存在try...finally..那么等finally 执行完再执行return。其中next、throw、return都可以使generator函数接着执行,不同在于next是正常执行,throw是抛出错误往下执行,return是终止程序。

       在一个generator函数中调用另一个generetor函数没有作用,但是被调用的generator函数前面加上yield *那就可以正常执行了,但是使用yield的话返回的Generator函数返回的对象。 yield * 后面跟一个数组对象那么它将开始对数组对象的遍历,如果是yield 后面跟数组对象呢那就是返回数组对象。 

    Generator函数不能用作构造函数,因为它返回的总是一个遍历器对象,也不能跟new命令一起使用会报错。但是可以根据call改变函数内部的this指向生成对象实例或者直接使用Prototype。

      状态机是能够根据控制信号按照预先设置状态进行位移,是协调相关信号动作、完成特定操作的控制中心。而generator函数的运行状态比较适合实现状态机的结构。Generator函数用途:异步操作的同步化表达(根据next方法),控制流管理,部署Iterator接口,作为数据结构。

相关文章

  • 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/mzggjxtx.html