理解geneartor

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

var hw = helloWorldGenerator();
hw.next()
// { value: 'hello', done: false }

value 值指yield后面 执行后 表达式的值,例如‘hello’

var m= yield 'hello'

m 是执行后返回的值 即yield+表达式的值.yield表达式本身没有返回值,或者说总是返回undefined。有return 返回 return 后的值

hw.next(j)

next方法可以带一个参数,该参数就会被当作上一个yield表达式的返回值(yield+表达式的值) j指上一次表达式中的返回的值
例子:解析

function* foo(x) {
  var y = 2 * (yield (x + 1));
  var z = yield (y / 3);
  return (x + y + z);
}

var a = foo(5);
a.next() // Object{value:6, done:false}
a.next() // Object{value:NaN, done:false}
a.next() // Object{value:NaN, done:true}

var b = foo(5);
b.next() // { value:6, done:false }
b.next(12) // { value:8, done:false }
b.next(13) // { value:42, done:true }
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文作者就是我,简书的microkof。如果您觉得本文对您的工作有意义,产生了不可估量的价值,那么请您不吝打赏我,...
    microkof阅读 23,783评论 16 78
  • 在此处先列下本篇文章的主要内容 简介 next方法的参数 for...of循环 Generator.prototy...
    醉生夢死阅读 1,463评论 3 8
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍...
    呼呼哥阅读 1,092评论 0 4
  • 去年11月份给自己定下了每周看一部经典国外电影的计划,想填补这部分的空白,有些经典真确实令人不失所望,而有的却...
    Isabella_岳岳阅读 1,224评论 0 0
  • 风景之所以动人,也许是因为缓慢行走。安静下来静静的融入,可以感受到大自然的温度和湿度。最美的不一定是诗与远方,有可...
    含滋和眯眼儿阅读 794评论 1 5