NATIVE

settings_applicationsObject

NATIVE

Editing
  • account_tree
  • bug_report

ObjectAsyncIterator

비동기 이터레이터 프로토콜(async iterator protocol)을 준수하는 숨겨진 객체이다. 이 숨겨진 객체는 내장된 모든 비동기 반복자에게 상속된다.

설명

Iterator 객체와 마찬가지로 next() 메소드를 제공하며 next() 메소드에 의해 반환되는 값은 Promise 객체에 담겨진다.

이터러블 프로토콜(iterable protocol)과 이터레이터 프로토콜(iterator Protocol)을 모두 준수하는 AsyncGenerator 객체에는 기본적으로 AsyncIterator 객체가 포함되어 for await...of 반복 구문으로 반복자의 값을 조회할 수 있다. 다음의 코드는 아래의 예제에서 실제로 확인이 가능하다.

@@asyncIterator 심벌을 사용하는 경우
const asyncGenerator = (async function*() {
  yield 1;
  yield 2;
  yield 3;
})();

const asyncIterator = asyncGenerator[Symbol.asyncIterator]();

(async function() {
  for await (let item of asyncIterator) {
    console.log(item);
  }
})();

다음의 경우는 Iterator 객체를 따로 가져오지 않고 반복문에서 직접 Iterator 객체를 사용하는 경우이다. 이터러블 프로토콜(iterable protocol)을 준수하므로 가능한 반복문에서 자동으로 Iterator 객체를 처리한다. 다음의 코드는 아래의 예제에서 실제로 확인이 가능하다.

 for await...of 반복문에서 직접 사용하는 경우
const asyncGenerator = (async function*() {
  yield 1;
  yield 2;
  yield 3;
})();

(async function() {
  for await (let item of asyncGenerator) {
    console.log(item);
  }
})();

예제

(1) @@asyncIterator 심벌을 사용하는 경우
(2) for await...of 반복문에서 직접 사용하는 경우

하위 트리 탐색

  • [[Prototype]]

    • Methods

      • @@asyncIterator

        상속된 모든 비동기 반복자에게 비동기 이터러블 프로토콜(async iterable protocol)을 구현하고 for await...of 반복 구문을 사용할 수 있도록 한다.

        반복 가능한 비동기 반복자를 Promise 객체로 래핑하여 반환한다.

버전 명세

ECMAScript 2024(15th Edition)
#sec-asynciteratorprototype-asynciterator

지원 웹브라우저