티스토리 뷰
예제를 보면서 제너레이터 작동방법을 확인하자.
@ 제너레이터 함수 생성 및 호출 방법
// 제너레이터를 생성할때는 function* 을 사용한다.
// 화살표 함수로는 제너레이터를 만들 수 없다.
function* myGen() {
yield 1;
yield 2;
yield 3;
yield 4;
return 5;
}
const myItr = myGen();
console.log(myItr.next());
console.log(myItr.next());
console.log(myItr.next());
console.log(myItr.next());
console.log(myItr.next());
console.log(myItr.next());
// 출력
// { value: 1, done: false }
// { value: 2, done: false }
// { value: 3, done: false }
// { value: 4, done: false }
// { value: 5, done: true }
// { value: undefined, done: true }
// next() 함수가 호출될 때마다 yield값이 반환되고, 호출 위치가 기억된다.
// return을 만나거나 마지막 라인이 실행될때 done이 true가 되며,
// 이후의 value 값은 undefined가 된다.
@ next()를 호출할 때, 인수값 지정 - next()와 yield가 서로 데이터를 주고받을 수 있다.
function* myGen() {
const x = yield 1;
const y = yield x + 1;
const z = yield y + 2;
return x + y + z;
}
const myItr = myGen();
// next()에 인수를 넣음으로써
// 호출자가 제너레이터에게 값을 전달 할 수 있다.
console.log(myItr.next());
console.log(myItr.next(10));
console.log(myItr.next(20));
console.log(myItr.next(20));
// 출력
// { value: 1, done: false }
// { value: 11, done: false } x에 10이 전달되어 10 + 1 = 11
// { value: 22, done: false } y에 20이 전달되어 20 + 2 = 22
// { value: 50, done: true } z에 20이 전달되어 x + y + z = 10 + 20 + 20 = 50
@ 참고링크
https://ko.javascript.info/generators
'개발일기 > JS' 카테고리의 다른 글
[JS] Javascript ES6 Class , extends 예시코드 (0) | 2022.02.21 |
---|---|
[JS] Javascript call , apply ,bind 예시 코드 (0) | 2022.02.21 |
[JS] Javascript 모달창 상태에 따른 스크롤 막기, 풀기 (1) | 2022.02.20 |
[JS] FormData에 다차원 object append하기 (0) | 2022.02.19 |
[JS] FormData의 객체에 파일과 String데이터를 한번에 담는 방법 (0) | 2022.02.19 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 전기기기
- JavaScript
- 전기기사실기단답
- 게더타운맵
- 전기기사실기CBT
- 실기CBT
- 개더타운
- TS
- 산업안전기사
- 산안기 합격률
- shortid
- dummydata
- 전기기사필기
- KEC반영
- React
- 모두CBT
- 전기공사기사
- 게더타운
- nextjs
- gathertown
- fakerjs
- 전자기학
- 전기산업기사
- 산업안전기사 실기
- cbt
- 전력공학
- 전기기사 필기
- TypeScript
- zep
- 전기기사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함