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);
function 옆에 * 을 붙여줘야 제너레이터 라는 걸 알려준다.
이터러블의 간편 버전
yield는 return과 비슷하지만 다음 사용자가 next()를 호출할 때까지 기다렸다가 사용자가 next()호출 해야지 그 다음 코드로 실행이 되어서 순회를 하고 다시 기다렸다가 next()를 호출 해야지 다시 순회한다. 즉 사용하는 사람한테 제어권을 양도한다.
하지만 이터러블과 제너레이터를 구현 할 경우는 거의 없다.