[Javascript] Deep Dive 46장 제너레이터와 async/await

Yuzu·2023년 7월 11일
0

46장 제너레이터와 async/await

46.1 제너레이터(generator)란?

: 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수

제너레이터의 특징

  1. 제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다.
    일반 함수에서 함수 호출자(caller)는 함수를 호출한 이후 함수 실행을 제어할 수 없다.
    제너레이터 함수는 함수 호출자가 함수 실행을 일시 중지시키거나 재개시킬 수 있다.
    함수의 제어권을 함수가 독점하는 것이 아니라 함수 호출자에게 양도(yield)할 수 있다는 것을 의미한다.

  2. 제너레이터 함수는 함수 호출자와 함수의 상태를 주고받을 수 있다.
    일반 함수는 함수가 실행되고 있는 동안에 함수 외부에서 함수 내부로 값을 전달하며 함수의 상태를 변경할 수 없다.
    제너레이터 함수는 함수 호출자에게 상태를 전달할 수 있고 함수 호출자로부터 상태를 전달받을 수도 있다.

  3. 제너레이터 함수를 호출하면 제너레이터 객체를 반환한다.
    일반 함수는 호출시 함수 코드를 일괄 실행하고 값을 반환한다.
    제너레이터 함수를 호출하면 함수 코드를 실행하는 것이 아니라 이터러블(iterable)이면서 동시에 이터레이터(iterator)인 제너레이터 객체를 반환한다.

46.2 제너레이터 함수의 정의

  • function* 키워드로 선언
  • 하나 이상의 yield 표현식을 포함
  • 애스터리스크(*)의 위치는 function 키워드와 함수 이름 사이라면 어디든지 상관없다.
  • 제너레이터는 화살표 함수, new 연산자로 쓰일 수 없다.

46.3 제너레이터 객체

profile
냐하

0개의 댓글