Асинхронные итераторы — это объекты, которые выдают значения асинхронно, по одному за раз. В отличие от обычных итераторов, каждый вызов .next() возвращает Promise, который разрешается в { value, done } — позволяя тебе await-ить каждое значение перед тем, как продолжить.
Ты потребляешь асинхронные итераторы через цикл for await...of:
for await (const chunk of asyncDataStream) {
console.log(chunk);
}
Ты можешь создавать их с помощью асинхронной функции-генератора:
async function* fetchPages(url) {
let page = 1;
while (true) {
const data = await fetch(`${url}?page=${page++}`);
const json = await data.json();
if (!json.length) break;
yield json;
}
}
async function* определяет асинхронный генератор, который выдаёт значения ленивоyield приостанавливает выполнение до момента, когда будет запрошено следующее значениеfor await...of автоматически обрабатывает разрешение Promise и вызывает .next() внутри себяdone: trueАсинхронные итераторы позволяют тебе обрабатывать данные по мере их поступления, а не ждать, пока всё загрузится. Это улучшает эффективность по памяти и отзывчивость, особенно когда дело касается больших наборов данных или медленных, непрерывных источников данных.
Async iterators автоматически обрабатывают разрешение Promise внутри циклов for await...of, избавляя от необходимости вручную вызывать .next() и ожидать каждую итерацию.
Новый — ещё не проверен сообществом
Вы