根据语法规范,yield 关键字用来暂停和继续执行一个生成器函数。当外部调用生成器的 next() 方法时,yield 关键字右侧的表达式才会执行。
执行结果会转化为一个对象(包含两个属性, value 和 done),作为 next() 方法的返回值。
对于 var foo = yield expression 语句,yield 左侧变量 foo 的值将在下一次调用 next() 方法时获得,并且等于调用时 next() 方法的参数。
下面调用生成器函数。
// 第 1 次调用 next, v1 的值还没有返回. console.log(nums.next(2));程序输出如下。
function start. { value: 0, done: false }接着,执行第二次调用。
// 第 2 次调用 next, next 参数作为上一次 yield 值返回给 v1. console.log(nums.next(3)); //此时程序输出如下。 v1 = 3 { value: 1, done: false }最后,执行第三次调用。
// 第 3 次调用 next, 此时 done 的值为 true, 直接返回 return 的值. console.log(nums.next(4)); //程序结束执行,输出如下。 v2 = 4 { value: 5, done: true }