热点新闻
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
2023-07-10 10:10  浏览:2575  搜索引擎搜索“混灰机械网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在混灰机械网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布



image.png

一、介绍

Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同

回顾下上文提到的解决异步的手段:

  • 回调函数
  • promise

那么,上文我们提到 promsie 已经是一种比较流行的解决异步方案,那么为什么还出现 Generator?甚至 async/await 呢?

该问题我们留在后面再进行分析,下面先认识下 Generator

Generator函数

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

形式上,Generator 函数是一个普通函数,但是有两个特征:

  • function 关键字与函数名之间有一个星号
  • 函数体内部使用 yield 表达式,定义不同的内部状态

function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; }

二、使用

Generator 函数会返回一个遍历器对象,即具有 Symbol.iterator 属性,并且返回给自己

function* gen(){ // some code } var g = gen(); g[Symbol.iterator]() === g // true

通过 yield 关键字可以暂停 generator 函数返回的遍历器对象的状态

function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; } var hw = helloWorldGenerator();

上述存在三个状态:hello、world、return

通过 next 方法才会遍历到下一个内部状态,其运行逻辑如下:

发布人:3a8f****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发