update modules

This commit is contained in:
2025-03-05 16:38:24 +03:00
parent b4f0c9b803
commit c3c72fc22e
6 changed files with 165 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
---
sidebar_position: 2
---
# Асинхронные итераторы и генераторы
Источник: [https://learn.javascript.ru/async-iterators-generators](https://learn.javascript.ru/async-iterators-generators)
Обычные итераторы и генераторы прекрасно работают с данными, которые не требуют времени для их создания или получения.
Когда мы ожидаем, что данные будут поступать асинхронно, с задержками, можно использовать их асинхронные аналоги и for
await..of вместоfor..of.
Синтаксические различия между асинхронными и обычными итераторами:
| | Перебираемый объект | Асинхронно перебираемый |
|-------------------------------|-----------------------------|-----------------------------------------------------------|
| Метод для получения итератора | Symbol.iterator | Symbol.asyncIterator |
| next() возвращает | {value:…, done: true/false} | промис, который завершается с {value:…, done: true/false} |
Синтаксические различия между асинхронными и обычными генераторами:
| | Генераторы | Асинхронные генераторы |
|-----------------------------|-----------------------------|-----------------------------------------------------------|
| Объявление | function* | async function* |
| generator.next() возвращает | {value:…, done: true/false} | промис, который завершается с {value:…, done: true/false} |
В веб-разработке мы часто встречаемся с потоками данных, когда они поступают по частям. Например, загрузка или выгрузка большого файла.
Мы можем использовать асинхронные генераторы для обработки таких данных. Также заметим, что в некоторых окружениях, например, браузерах, есть и другое API, называемое Streams (потоки), который предоставляет специальные интерфейсы для работы с такими потоками данных, их преобразования и передачи из одного потока в другой (например, загрузка из одного источника и сразу отправка в другое место).