理解geneartor

2017-08-28  本文已影响12人  玄月府的小妖在debug
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
上一篇下一篇

猜你喜欢

热点阅读