Generator
개념
- generator function으로부터 반환된 값이며 반복자와 반복자 프로토콜을 준수한다.
function* gen() {
yield 1;
yield 2;
yield 3;
}
var g = gen(); // "Generator { }"
메서드
- Generator.prototype.next(); // yield 표현을 통해 yield된 값을 반환한다.
- Generator.prototype.return(); // 주어진 값을 반환하고 생성기를 종료한다.
- Generator.prototype.throw(); // 생성기로 에러를 throw 한다.
yield
개념
- 제너레이터 함수를 중지하거나 재개하는데 사용된다.
- return처럼 함수를 종료한다. 다만 함수를 재호출(next())할 경우 해당 지점에서 시작한다.
- value와 done 속성을 가진다.
- value : yield 표현의 실행 결과.
- done : 제너레이터 함수가 완전히 종료되었는지 여부를 boolean형태로 보여준다.
- yield* : 반복자가 반복자를 호출하는 경우 쓰인다.
function* call() {
console.log('first call');
yield 10;
console.log('second call');
yield 20;
console.log('third call');
yield 30;
}
// value와 done 둘다 나옴
let gen = call();
console.log(gen.next());
console.log(gen.next());
console.log(gen.next());
console.log(gen.next());
// value만 나옴
for(let atom of call()){
console.log(atom);
}
Generator Function ( function*)
개념
- Generator 객체를 반환한다.
- 생성자로서 사용될 수 없다.
- 인자값을 넘길 수도 있다. : 비동기 콜에서 함수끼리 통신하게 만들 수 있다.
function* anotherGenerator(i) {
yield i + 1;
yield i + 2;
yield i + 3;
}
function* generator(i){
yield i;
yield* anotherGenerator(i);
yield i + 10;
}
var gen = generator(10);
console.log(gen.next().value); // 10
console.log(gen.next().value); // 11
console.log(gen.next().value); // 12
console.log(gen.next().value); // 13
console.log(gen.next().value); // 20
'JavaScript' 카테고리의 다른 글
객체탐색과 배열탐색 (0) | 2019.07.22 |
---|---|
변수 선언 (0) | 2019.07.22 |
jest (0) | 2019.07.22 |
Promise (0) | 2019.07.22 |
데이터 (0) | 2019.07.17 |