👋 yield 반복, 다수의 yield 처리
1. yield 반복
let status = true;
function* sports() {
let count = 0;
while (status) {
yield ++count;
}
}
const obj = sports();
console.log(obj.next()); // {value: 1, done: false}
console.log(obj.next()); // {value: 2, done: false}
status = false;
console.log(obj.next()); // {value: undefined, done: true}
yield
를 반복하는 형태 임-
let status = ture;
while()
문을 제어하기 위한 상태 값
-
첫 번 째
next()
호출let count = 0;
을 실행하여count
변수에 0을 설정 함- 누적 값을 구하기 위한 것
-
while(statu) { yield ++count; }
satus
가true
이므로yeild
를 수행 함{ value: 1, done: false }
반환
-
두 번째
next()
를 호출 함status
가true
이므로yield
를 수행 함
-
세 번째
next()
를 호출 함status
가false
이므로yield ++count;
를 수행하지 않음{ value: undefined, done: true }
반환{ done: true }
이므로 이터레이터를 더 이상 사용 할 수 없음
2. 다수의 yield 처리
function* sports() {
return yield yield yield;
}
const obj = sports();
console.log(obj.next()); // {value: undefined, done: false}
console.log(obj.next(10)); // {value: 10, done: false}
console.log(obj.next(20)); // {value: 20, done: false}
console.log(obj.next(30)); // {value: 30, done: true}
-
한 줄에 다수의
yeild
와return
작성return yield yield yield;
-
첫 번째
next()
호출- 첫 번째
yield
를 소행 함 yield
에 반환 값이 없으므로{ value: undefined, done: false }
반환
- 첫 번째
-
두 번째
next(10)
호출- 파라미터 값 : 10
- 두 번째
yield
를 수행 함 - 함수에 파라미터 값을 받을 변수가 없으면 파라미터 넘겨준 값을 반환
{ value: 10, done: false }
-
세 번째
next(20)
호출- 파라미터 값 : 20
- 세 번째
yeild
를 수행 함 - 함수에 파라미터 값을 받을 변수가 없으므로 파라미터로 넘겨 준 값을 반환
{ value: 20, done: false }
반환
-
네 번째
next(30)
호출- 파라미터 값: 30
- 처리할
yield
가 없으므로done: true
반환 return
문을 작성했으므로 파라미터로 넘겨 준 값을 반환{ value: 30, done: true }
반환
-
return
문을 작성하지 않으면- 30이 아닌
undefined
반환{value: undefined, done: true}
- 30이 아닌