
389
12.5 요약
시다. 그러면
throw()
로 예외를 전달해 카운터를 0으로 리셋할 수 있습니다.
제너레이터가
yield*
를 통해 다른 이터러블 객체에 값을 전달하면 제너레이터
의
next()
메서드를 호출할 때 이터러블 객체의
next()
메서드가 호출됩니다.
re
turn()
과
throw()
메서드도 마찬가지입니다. 제너레이터가
return()
과
throw()
메
서드가 정의된 이터러블 객체에
yield*
를 사용하면, 제너레이터에서
return()
이나
throw()
를 호출할 때 이터레이터의
return()
이나
throw()
메서드가 이어서 호출됩
니다. 이터레이터에는 반드시
next()
메서드가 있어야 합니다. 순회를 불완전하게
끝냈을 때 정리 작업을 수행해야 하는 이터레이터는
return()
메서드를 정의해야
합니다. 과연 실용적인지는 의문이지만, 이터레이터는 모두
throw()
메서드를 정의
할 수 있습니다.
12.4.4
제너레이터는 아주 강력하며 일반화된 제어문입니다. 제너레이터를 사용하면
yield
를 써서 계산을 잠시 멈췄다가 원하는 시점에 원하는 값으로 재시작할 수 있
습니다. 제너레이터를 사용해서 싱글 스레드를 사용하는 자바스크립트 코드를 모
아서 일종의 스레드 협업 시스템을 만들 ...