Асинхронный итератор в Javascript - PullRequest
0 голосов
/ 29 июня 2018

Я ищу лучший способ сделать асинхронный итератор в Javascript. Я уже использую генераторы и функции async / await, но я не могу найти способ выполнить так называемый цикл for-await-of без использования последней версии Node.js (10.x).

Проблема заключается в следующем:

Я получаю большой объем данных из API, и мне нужно прокрутить его содержимое. Я не хочу хранить весь контент в массиве, так как он может взорваться в оперативной памяти.

Я знаю, как это сделать с помощью потоков, но было бы круче (с моей точки зрения) сделать это с помощью генераторов.

Спасибо за вашу помощь,

С уважением,

- Корантен

1 Ответ

0 голосов
/ 03 июля 2018

Асинхронные итераторы недоступны в node.js ниже v10, но есть несколько довольно хороших способов асинхронного потребления потока без итераторов, например, с scramjet:

const stream = DataStream.from(someNodeObjectStream);
await (async () => {
    while (let data = await stream.whenRead()) {
        doSomethingWith(data);
    }
})();

Это более или менее синтаксический сахар, который вы получаете от асинхронных итераторов.

...