The next() method returns an object with two properties done and value. You can also provide a parameter to the next method to send a value to the generator.



The value to send to the generator.

Return value

An Object with two properties:

  • done (boolean)
    • Has the value true if the iterator is past the end of the iterated sequence. In this case value optionally specifies the return value of the iterator.
    • Has the value false if the iterator was able to produce the next value in the sequence. This is equivalent of not specifying the done property altogether.
  • value - any JavaScript value returned by the iterator. Can be omitted when done is true.


Using next()

The following example shows a simple generator and the object that the next method returns:

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

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

Sending values to the generator

In this example, next is called with a value. Note that the first call did not log anything, because the generator was not yielding anything initially.

function* gen() {
  while(true) {
    var value = yield null;

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


Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of '' in that specification.
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
The definition of '' in that specification.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support ? 26 (26) ? ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? 26.0 (26) ? ? ?

See also


© 2016 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.