function* dataConsumer() {
console.log('Started');
console.log(`1. ${yield}`);
console.log(`2. ${yield}`);
return 'result';
}
let genObj = dataConsumer();
console.log(genObj.next());//[1]
console.log(genObj.next('a'));//[2]
console.log(genObj.next('b'));//[3]
请问上面代码是怎么一个执行顺序dataConsumer
里面的第二个和第三个里的yield
前面没有 类似yield 222
之类的,,它是怎么执行的?谢谢
yield语句是暂停执行的标记,每次调用next方法,执行到下一个yield之前。
因而,
yield 222
并不是一定要求的格式。就像我们常常写的
return 222
,函数返回值是222,而同样return;
函数返回值是undefined
。这是一样的道理。因为此处
yield
后面并没有跟返回值,所以genObj.next()
返回值是Object {value: undefined, done: false}
。阮一峰EMCAScript入门