zoukankan      html  css  js  c++  java
  • es6中的generator函数

    基本用法:

    1、这个函数与普通函数区别是定义的时候有个*  是个状态机

    2、一般和yield连用    

    3、通过next方法一步步执行

     

    默认会返回一个遍历对象 有两个属性

    Value:代表内部状态的值    done:代表是否迭代完成

    (下面没有内容结束就是true

     

    1、generator

    (1)Generator函数是ES6提供的一种异步编程的解决方案;
    (2)Generator函数是一个状态机,封装了多个内部状态,执行Generator函数会返回一个遍历器对象,

      也就是说,Generator函数除了是状态机,还是一个遍历器对象生成函数。

      返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。

    2.Generator函数的特征:

    (1)function 关键字与函数名之间有一个*号;
    (2)Generator函数内部使用yield表达式,定义内部的不同状态;
    (3)Generator函数调用不像普通函数那样直接调用,要想函数执行必须调用遍历器对象的next方法,也就是说想要执行函数就需要使用next方法,

      调用一次next方法执行一次yield表达式,直到执行完yield表达式。
    代码实现:

    Generator的应用场景

    1、代替递归

    2、异步操作的同步化

    Generator 函数的暂停执行的效果,意味着可以把异步操作写在yield表达式里面,等到调用next方法时再往后执行。这实际上等同于不需要写回调函数了,因为异步操作的后续操作可以放在yield表达式下面,反正要等到调用next方法时再执行。所以,Generator 函数的一个重要实际意义就是用来处理异步操作,改写回调函数。
    Ajax 是典型的异步操作,通过 Generator 函数部署 Ajax 操作,可以用同步的方式表达

    1.比如抽奖环节,当前用户还可以抽奖5次。点击后次数减1。

    若采用ES5的方式,不使用Generator,则需要将count存入全局变量中,但是这样非常不安全,

    如果别人知道变量是什么,就可以修改变量;另外存入全局变量也会影响性能。

  • 相关阅读:
    2.6 CMMI2级——供应商协议管理(Supplier Agreement Management)
    使用boch仿真器在x86 PC平台上搭建Linux0.11系统环境(windows下)
    java实现登录验证码
    Hadoop DBOutputFormat的使用
    史蒂芬·金《肖申克的救赎》读后感
    Change Base
    IOS深入学习(20)之Object modeling
    android对话框(Dialog)的使用方法
    郝萌主的微信公众号上线了
    Dell shareplex 与HVR数据复制软件
  • 原文地址:https://www.cnblogs.com/swjRH/p/13624408.html
Copyright © 2011-2022 走看看