728x90
제너레이터
ECMAScript 6부터 추가된 개념.
일반 함수는 하나의 값(혹은 0개의 값)만을 반환합니다.
하지만 제너레이터(generator)를 사용하면 여러 개의 값을 필요에 따라 하나씩 반환(yield)할 수 있습니다. 제너레이터와 이터러블 객체를 함께 사용하면 손쉽게 데이터 스트림을 만들 수 있습니다.
제너레이터 함수
제너레이터를 만들려면 '제너레이터 함수’라 불리는 특별한 문법 구조, function*이 필요합니다.
예시:
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
제너레이터 함수는 일반 함수와 동작 방식이 다릅니다. 제너레이터 함수를 호출하면 코드가 실행되지 않고, 대신 실행을 처리하는 특별 객체, '제너레이터 객체’가 반환됩니다.
예시를 살펴봅시다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
// '제너레이터 함수'는 '제너레이터 객체'를 생성합니다.
let generator = generateSequence();
alert(generator); // [object Generator]
함수 본문 코드는 아직 실행되지 않았습니다.
next()는 제너레이터의 주요 메서드입니다. next()를 호출하면 가장 가까운 yield <value>문을 만날 때까지 실행이 지속됩니다(value를 생략할 수도 있는데, 이 경우엔 undefined가 됩니다). 이후, yield <value>문을 만나면 실행이 멈추고 산출하고자 하는 값인 value가 바깥 코드에 반환됩니다
next()는 항상 아래 두 프로퍼티를 가진 객체를 반환합니다.
- value: 산출 값
- done: 함수 코드 실행이 끝났으면 true, 아니라면 false
728x90
'자바스크립트 끄적끄적' 카테고리의 다른 글
자바스크립트 배열 선언 및 초기화 시 편안한 방법 정리 (0) | 2022.10.24 |
---|---|
자바스크립트 - 정규표현식 정리 (0) | 2022.09.11 |
경로 관련 문제가 나올 때: Error: Cannot find module 'wish' (0) | 2022.09.09 |
undefined? undeclared? null? 의 차이 + html태그 doc? (1) | 2022.09.01 |
자바스크립트 프로토타입이란? (0) | 2022.08.31 |