美文网首页
Generator(生成器)函数

Generator(生成器)函数

作者: 这很重要吗 | 来源:发表于2017-06-11 19:51 被阅读0次
    image.png

    基本概念##

    解决 异步编程,整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。

    调用 Generator 函数,会返回一个内部指针对象,即遍历器

    next 方法的作用是分阶段执行 Generator 函数。
    每次调用 next 方法,会返回一个对象,表示当前阶段的信息( value 属性和 done 属性)
    value 属性是** yield 语句后面表达式的值,**表示当前阶段的值;
    done属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。

    image.png

    使用Generator函数作为遍历器的返回值##

    image.png image.png

    在处理状态机时,Genertator有优势##

    image.png image.png

    async语法,generator函数的语法糖##

    语法糖:就相当于汉语里的成语。
    即,用更简练的言语表达较复杂的含义。在得到广泛接受的情况之下,提高开发编码的效率。

    实例-抽奖##

    image.png

    抽奖次数没有保存在全局变量中

    实例-长轮询##

    实时取得服务器端的变化:

    1. 长轮询
    2. websocket(兼容性差)
    image.png image.png

    Generator 函数的数据交换和错误处理##

    next 方法还可以接受参数,向 Generator 函数体内输入数据。

    function* gen(x){
      var y = yield x + 2;
      return y;
    }
    
    var g = gen(1);
    g.next() // { value: 3, done: false }
    g.next(2) // { value: 2, done: true }
    

    Generator 函数内部还可以部署错误处理代码,捕获函数体外抛出的错误。

    function* gen(x){
      try {
        var y = yield x + 2;
      } catch (e){ 
        console.log(e);
      }
      return y;
    }
    
    var g = gen(1);
    g.next();
    g.throw('出错了');
    // 出错了
    

    相关文章

      网友评论

          本文标题:Generator(生成器)函数

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