생성자가 따로 없고 비동기 제너레이터 함수(generator function)
로부터 생성되어 반환된다. 프로토타입을 통해 메소드를 지원한다. 비동기 이터러블(async iterable)과 비동기 이터레이터(async iterator) 프로토콜(protocol)을 준수한다.
AsyncGenerator
객체의 인스턴스를 생성하는 함수는 선언식과 표현식 그리고 AsyncGeneratorFunction
객체의 생성자로 구현이 가능하다.
제너레이터(generator) 함수는 실행문에 대한 정교한 제어 기능을 추가해 일반 함수보다 복잡한 로직 설계에 이점이 있는 함수 형태이다. AsyncGenerator
객체는 비동기 제너레이터 함수를 생성한다. 비동기에 대한 개념은 AsyncFunction
객체에서 짧게 요약한 부분이 있으므로 참고한다. 비동기 함수를 생성할 때 동기 함수 생성 방법을 따르고 async
키워드를 추가하므로 동기 함수임을 알리는 것 처럼 제너레이터 함수도 동일하다. 단지 function
키워드 끝에 *
를 붙여 제너레이터 함수임을 알린다. 비동기 제너레이터 함수이므로 function
키워드 앞에 aync
키워드도 함께 작성해야 한다. 그리고 비동기 함수처럼 결과값을 Promise
객체를 통해 반환해야 한다.
// 선언식
async function* demo() {
}
// 표현식
const demo = async function*() {
}
제너레이터(generator) 함수에 대한 자세한 내용은 Generator
객체를 참고한다.
비동기 제너레이터(generator) 함수에서 반환된 AsyncGenerator
객체는 이터러블 프로토콜(Iterable protocol)과 이터레이터 프로토콜(Iterator Protocol)을 모두 준수한다.