* 이터러블을 좀 더 실플하게 만드는 방법이 제너레이터(generator)이다.
- 함수에 *을 붙여주어서 제너레이터를 만든다.
- yield는 다음 사용자가 next를 호출할 때 까지 기다렸다가 사용자가 next를 호출해야 다음 코드가 실행이 되어서 순회한다.
- 사용자에게 제어권을 양도한다.
- next를 호출하기전에 return을 하면 제너레이터가 끝이 나게 된다.
- throw를 이용해서 error를 던질 수 있다.
[ 참고 사항 ] 이터러블과 제너레이터는 거의 구현할 일이 없다.
* 제너레이터 예시코드
function* multipleGenerator() {
try {
for (let i = 0; i < 10; i++) {
console.log(i);
yield i ** 2;
}
} catch (error) {
console.log(error);
}
}
const multiple = multipleGenerator();
let next = multiple.next();
console.log(next.value, next.done);
// multiple.return();
multiple.throw('Error!');
next = multiple.next();
console.log(next.value, next.done);
'Study > JavaScript' 카테고리의 다른 글
[JavaScript_study] 구조 분해 할당(Destructuring assignment) (0) | 2022.04.12 |
---|---|
[JavaScript_study] Spread operator (0) | 2022.04.12 |
[JavaScript_study] 이터러블(iterable)이란? (0) | 2022.04.12 |
[JavaScript_study] 고차함수 (Higher-Order Function) (0) | 2022.04.12 |
[JavaScript_study] shallow copy (0) | 2022.04.11 |