发电机如何工作?

时间:2017-07-06 06:36:18

标签: javascript

我正在阅读JavaScript Generators,我对以下计划有疑问。

首先it.next()如何将"Hello"作为输出?如果有人一步一步详细解释它,那就太好了。

function* foo(x) {
  var y = x * (yield "Hello"); // <-- yield a value!
  return y;
}

var it = foo(6);

var res = it.next(); // first `next()`, don't pass anything
console.log(res.value); // "Hello"

res = it.next(7); // pass `7` to waiting `yield`
console.log(res.value); // 42

1 个答案:

答案 0 :(得分:0)

我将逐步解释它:

第1步:您创建了一个名为foo

的生成器函数

Step2 :您已将生成器函数分配给一个名为它的变量,并传递了值6(分配值x = 6)。

Step3 :您正在生成器对象上调用next函数。魔术在这里发生。它将开始执行功能,直到找不到第一个yield。一旦到达第一个yield,它将停止执行并返回值。