Symbol.asyncIterator

Добревідомий символ Symbol.asyncIterator вказує для об'єкта AsyncIterator за замовчуванням. Якщо ця властивість присутня в об'єкті, то він є асинхронним ітерабельним об'єктом і може використовуватись у циклі for await...of.

Опис

Символ Symbol.asyncIterator є вбудованим символом, який використовується для доступу до метода @@asyncIterator у об'єкта. Для того, щоб об'єкт був асинхронним ітерабельним об'єктом, він повинен мати ключ Symbol.asyncIterator.

Атрибути поля Symbol.asyncIterator
Доступний для запису ні
Доступний для переліку ні
Доступний для налаштування ні

Приклади

Асинхронні ітерабельні об'єкти, створені користувачем

Ви можете визначити власний асинхронний ітерабельний об'єкт, встановивши на об'єкті властивість [Symbol.asyncIterator]

const myAsyncIterable = new Object();
myAsyncIterable[Symbol.asyncIterator] = async function*() {
    yield "привіт";
    yield "асинхронний";
    yield "перебір!";
};

(async () => {
    for await (const x of myAsyncIterable) {
        console.log(x);
        // очікуваний результат:
        //    "привіт"
        //    "асинхронний"
        //    "перебір!"
    }
})();

Створюючи API, пам'ятайте, що асинхронні ітерабельні об'єкти створені для того, щоб відображати щось ітерабельне, наприклад, потік даних чи список, а не для того, щоб повністю замінити зворотні виклики та події у більшості ситуацій.

Вбудовані асинхронні ітерабельні об'єкти

У JavaScript наразі не існує вбудованих об'єктів, що мають ключ [Symbol.asyncIterator] за замовчуванням. Однак, WHATWG Streams можуть стати першим вбудованим асинхронним ітерабельним об'єктом, з нещодавно доданим у специфікацію символом [Symbol.asyncIterator].

Специфікації

Специфікація Статус Коментар
ECMAScript 2018 (ECMA-262)
The definition of 'Symbol.asyncIterator' in that specification.
Standard

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також