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

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
asyncIteratorChrome Full support 63Edge Full support 79Firefox Full support 57IE No support NoOpera Full support 50Safari Full support 11.1WebView Android Full support 63Chrome Android Full support 63Firefox Android No support NoOpera Android Full support 46Safari iOS No support NoSamsung Internet Android Full support 8.0nodejs Full support 10.0.0

Legend

Full support  
Full support
No support  
No support

Див. також