👋 yield 키워드
1. Yield
Syntax: [returnValue] = yield [표현식];-
yield키워드 사용 형태function* sports(one) { yield one + 10; yield; const value = yield one + 50; } const obj = sports(30); console.log(obj.next()); // {value: 40, done: false} console.log(obj.next()); // {value: undefined, done: false} console.log(obj.next()); // {value: 80, done: false} console.log(obj.next(200)); // {value: undefined, done: true}next()로 호출할 때 마다 하나씩 실행
-
yield키워드는 제너레이터 함수 실행을 멈추거나 다시 실행할 때 사용yield오른쪽의 표현식을 평가하고 결과를 반환- 표현식을 작성하지 않으면
undefined반환
[returnValue]오른쪽의 평가 결과가 설정되지 않고 다음next()에서 파라미터로 넘겨준 값이 설정됨-
yield표현식을 평가하면 호출한 곳으로{value: 값, done: true/false}반환function* sports(one) { yield one; const check = 20; } const obj = sports(10); console.log(obj.next()); // {value: 10, done: false} console.log(obj.next()); // {value: undefined, done: true} // 1. obj.next() 호출 yield one; 실행, {value: 10, done: false} 반환 // 2. obj.next() 호출 check = 20;을 실행하지만, yield 처리가 아니므로 {value: undefined, done: false}반환 // 3. 이 상태에서 계속 next()를 호출하면 {value: undefined, done: true} 반환 // 4. 함수를 호출할 수 있지만 함수가 실행되지 않음 -
value값yield표현식의 평가 결과 설정yield를 실행하지 못하면undefined
-
done값yeild를 실행하면falseyeild를 실행하지 못하면true
2. Yield 정리
function* sports(one) {
let two = yield one;
let param = yield one + two;
yield param + one;
}
const obj = sports(10);
console.log(obj.next()); // {value: 10, done: false}
console.log(obj.next()); // {value: NaN, done: false}
console.log(obj.next(20)); // {value: 30, done: false}
console.log(obj.next()); // {value: undefined, done: true}-
function* sports(one){}- 제너레이터 함수를 선언
- 3개의
yield를 작성함
-
const obj = sports(10);- 제너레이터 오브젝트를 생성함
- 파라미터 값, 10이
one에 설정됨
-
첫 번째의
obj.next()를 호출 함let two = yield one이 실행됨one의 값인 10을 반환함two변수에 10을 할당하지 않음
-
두 번째의
obj.next()를 호출 함next()에 파라미터 값을 작성하지 않았으므로two변수에undefined가 설정됨let param = yield one + two를 실행two변수 값이undefined이므로NaN를 반환
-
세 번째의
obj.next(20)를 호출 함- 파라미터 값 20이 바로 앞의
param변수에 설정됨 yield param + one을 실행함- 20 + 10을 반환 함
- 파라미터 값 20이 바로 앞의
-
네 번째의
obj.next()를 호출 함- 실행할
yield가 없으므로 더 이상 처리하지 않으며 - 끝이라는 것을 나타내는
done: true를 반환 함
- 실행할