👋 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이 아닌