on
자바스크립트에서 제너레이터(Generator)
자바스크립트에서 제너레이터(Generator)
자바스크립트에서 이터러블한 함수를 만들 때 사용되는 객체입니다.
좀 더 자세하게 알아보도록 하겠습니다.
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 루프에서 사용할 반복 가능한 객체 생성
배열을 무한 반복하다가 일정치까지 완료하면 처음으로 재설정
from http://codediary21.tistory.com/90 by ccl(A) rewrite - 2021-12-08 14:28:10