next
()
메소드는 done
과 value
프로퍼티를 가진 객체를 반환한다
. 또한 next
()
메소드를 호출할 때 매개변수를 제공하여 그 값을 generator에 전달할 수 있다.
문법
gen.next(value)
매개 변수
value
- Generator에 전달할 값
반환값
두 개의 프로퍼티를 가진 객체
:
done
(boolean)- Iterator(반복자)가 마지막 반복 작업을 마쳤을 경우
true
. 만약 iterator(반복자)에 return 값이 있다면value
의 값으로 지정된다. - Iterator(반복자)의 작업이 남아있을 경우
false
. Iterator(반복자)에done
프로퍼티 자체를 특정짓지 않은 것과 동일하다.
- Iterator(반복자)가 마지막 반복 작업을 마쳤을 경우
value
- Iterator(반복자)으로부터 반환되는 모든 자바스크립트 값이며done
이true
일 경우 생략될 수 있다.
예제
next()
사용하기
아래의 예시는 간단한 generator와 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 }"
Generator에 값 전달하기
이 예시에서는 next
가 값과 함께 호출되었다. 첫 번째 호출이 아무것도 출력하지 않은 것은 Generator가 아직 아무런 값도 yield
하지않았기 때문이다. (두 번째 호출과 함께 전달된 정수 2는 Generator 내부의 yield
키워드에 전달되어 value
로 할당되었고 console.log
로 출력되었다)
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
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Generator.prototype.next' in that specification. |
Standard | Initial definition. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Generator.prototype.next' in that specification. |
Draft |
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) | ? | ? | ? |