MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

next() 方法返回一个包含属性 donevalue 的对象。该方法也可以通过接受一个参数用以向生成器传值。

语法

gen.next(value)

参数

value
向生成器传递的值.

返回值

返回的对象包含两个属性:

  • done (布尔类型)
    • 当迭代器遍历到迭代序列末端时返回值 true。此时,迭代器可以将返回值作为 value
    • 当迭代器仍可继续在迭代序列中向前遍历时返回值 false。这相当于不指定 done 属性。
  • value - 迭代器返回的任意的Javascript值。当 done 的值为 true 时可以忽略该值。

示例

使用 next()方法

下面的例子展示了一个简单的生成器, 以及调用 next 后方法的返回值:

function* gen() { 
  yield 1;
  yield 2;
  yield 3;
}

var g = gen(); // "Generator { }"
g.next();      // "Object { value: 1, done: false }"
g.next();      // "Object { value: 2, done: false }"
g.next();      // "Object { value: 3, done: false }"
g.next();      // "Object { value: undefined, done: true }"

向生成器传值

在该示例中,调用 next 方法并传入了参数,请注意,首次调用 next 方法时没有出任何输出, 这是因为初始状态时生成器通过yield 返回了null.

function* gen() {
  while(true) {
    var value = yield null;
    console.log(value);
  }
}

var g = gen();
g.next(1); 
// "{ value: null, done: false }"
g.next(2); 
// "{ value: null, done: false }"
// 2

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Generator.prototype.next
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
Generator.prototype.next
Draft  

浏览器兼容性

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) 13 26 (26) 未实现 (Yes) 10
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 5.1 (Yes) 26.0 (26) ? ? 10

相关链接

文档标签和贡献者

 此页面的贡献者: Ende93, lukywong, jcouyang
 最后编辑者: Ende93,