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