Асинхронный итератор в Javascript
Я ищу лучший способ сделать асинхронный итератор в Javascript. Я уже использую генераторы и функции async/await, но я не могу найти способ реализовать так называемый цикл for-await-of без использования последней версии Node.js (10.x).
Проблема заключается в следующем:
Я получаю большой объем данных из API, и мне нужно прокрутить его содержимое. Я не хочу хранить весь контент в массиве, так как он может взорваться в оперативной памяти.
Я знаю, как сделать это с помощью потоков, но было бы круче (с моей точки зрения) сделать это с помощью генераторов.
Спасибо за вашу помощь,
С наилучшими пожеланиями,
- корентин
1 ответ
Асинхронные итераторы недоступны в node.js ниже v10, но есть несколько довольно хороших способов асинхронного потребления потока без итераторов, например, с scramjet
:
const stream = DataStream.from(someNodeObjectStream);
await (async () => {
while (let data = await stream.whenRead()) {
doSomethingWith(data);
}
})();
Это более или менее синтаксический сахар, который вы получаете от асинхронных итераторов.