Generator(生成器)函数

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('出错了');
// 出错了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容