generator 不同于普通的函数,执行方式有区别
|
|
第一个fooObj.next() 返回Object {value: 1, done: false}
此时fooObj指针指向的是yield 1(第一个yield)
第二次运行fooObj.next(), 指针指向console.log(yield)中的yield
即第二个yeild,此时函数返回Object {value: undefined, done: false}
第三次运行fooObj.next(), 指针继续向后移动,开始执行console.log(yield)
语句,由于next参数为undefined,则指定上一次(即第二次yeild)yeild为undefined
所以打印出undefined 和 Object {value: undefined, done: true}