자바스크립트에서 이터러블한 함수를 만들 때 사용되는 객체입니다.
좀 더 자세하게 알아보도록 하겠습니다.
Generator function
제네레이터 함수는 function 앞에 *을 붙여서 정의하고 Generator로 선언한 함수는
Generator 객체를 반환합니다.
function* generator(i) {
yield i;
yield i+1;
}
const get = generator(10);
console.log(gen.next().value);
// output: 10
console.log(gen.next().value);
// output: 11
위 코드와 같이 첫 요청을 했을 때에는 값을 넣었을 때는 10을 리턴하지만
next() 후 다시 리턴을 해보니 11을 리턴합니다. 여기서 한번더 next를 하게 되면 undefined를 리턴하게 됩니다.
Generator
Generator function에서 리턴되는 generator 객체는 아래의 코드와 같이 value와 done 객체가 출력 됩니다.
function* generator(i) {
yield i;
yield i+1;
}
const get = generator(10);
console.log(gen.next());
// {value: 10, done: false}
console.log(gen.next());
// {value: 10, done: true}
Generator의 활용 사례
일시적으로 중지하고 다시 시작해야 하는 for 루프에 사용
function* generator(limit) {
let i = 0
while(i < limit)
yeled i++;
}
console.log(generator(10).next().value) // 1
console.log(generator(10).next().value) // 2
console.log("hello world!") // hello world!
console.log(generator(10).next().value) // 3
- [Symbol.Iterator]를 사용하여 반복 불가능한 객체에서 for 루프에서 사용할 반복 가능한 객체 생성
- 배열을 무한 반복하다가 일정치까지 완료하면 처음으로 재설정
'JavaScript' 카테고리의 다른 글
javascript에서 이터러블(iterable)과 이터레이터(iterator)란 (0) | 2021.11.25 |
---|---|
javaScript에서의 Symbol이란 (0) | 2021.11.25 |
일급 함수와 고차 함수 (0) | 2021.11.20 |
Javascript(자바스크립트)에서 Hoisting(호이스팅) 이란? (0) | 2021.11.20 |