[node.js] 비동기 프로그래밍1 - generator(yield/next)

Hyo Kyun Lee·2021년 7월 26일
0

node.js

목록 보기
14/34

1. generator

반복자를 사용할 수 있는 객체, 혹은 그 객체를 사용할 수 있는 함수이다.

우리가 보통 사용하는 함수는 로직을 실행한 후 return을 통해 반환한 후, 재호출이 발생하기 전까지는 완전히 종료된다.

그러나 generator는 종료의 개념이 아닌, 보류의 개념이다.

2. yield / next의 활용

yield를 통한 반환

generator는 loop 환경 내에서 자신의 로직을 종료하지 않고, 기억한 상태로 보류한다.

즉 loop 내 yield(=자신의 logic을 종료하지않고 지속하며, loop를 지속하는 상황에서 반환값을 누적 및 지속 실행하며 전달)를 통해 자신의 logic을 종료하지않고 지속한다.

next를 통해 yield 호출

generator 내의 yield 반환을 지속하기 위해선 next를 통해 yield를 호출하면된다.

이때 generator 내 logic을 종료않고 누적하기위해선 loop 내에서 yield logic을 작성해야 한다.

function* gen() {
  let cnt = 0;
  while (true) {
    yield (cnt = cnt + 1);
  }
}

const g = gen();
console.log(g.next());
console.log(g.next());
console.log(g.next());

3. 비동기처리에서의 관점

generator의 logic을 실행한 후 yield를 특정 시점에 호출하여 비동기적인 처리를 할 수 있다.

4. 참조링크

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/yield
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Generator

0개의 댓글