美文网首页
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('出错了');
// 出错了

相关文章

  • Promise/generator/async与await

    promise generator 函数 (生成器函数); 普通函数function show(){} 生成器函数...

  • Generator异步方案、AsyncAwait语法糖

    生成器函数(Generator) generator是一个函数,有两个特征:generator由function*...

  • Generator

    Generator 概念: Generator 函数返回的遍历器对象 基本用法 // 定义生成器函数 ...

  • 8-1、generator yield

    generator 生成器generator 函数 中间可以暂停(普通函数一路走到黑)*fun 加 *next()...

  • Generator

    生成器函数(Generator Function) 生成器函数不能直接作为函数来使用 执行生成器函数会返回一个生成...

  • Python yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

  • async await 的实现原理

    generator + yield + promise 利用generator遍历器生成器函数的分段执行 ,只有在...

  • python中yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

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

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

  • ES6 异步进阶第二步:Generator 函数

    一、什么是生成器 Generator? 生成器对象是由一个 Generator 函数返回的,并且她符合 可迭代协议...

网友评论

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

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