Я несколько новичок в библиотеках Node.js и пытаюсь понять, как использовать асинхронную итерацию для потока ответов HTTP.Моя общая цель - прочитать большой поток ответов и обработать его по мере поступления кусков, в настоящее время через функцию генератора.Я не могу сохранить весь ответ в памяти для обработки.
Я использую библиотеку request
для выполнения HTTP-запроса следующим образом.
const request = require("request");
// contrived chunk-by-chunk stream processing
async function* getChunks(stream) {
for await (const chunk of stream) {
yield chunk[0];
}
}
async function doWork() {
var response = request.get("https://pastebin.com/raw/x4Nn0Tby");
for await (c of getChunks(response)) {
console.log(c);
}
}
Когда я запускаю doWork()
,Я получаю сообщение об ошибке, в котором говорится, что переменная stream
для getChunks()
не асинхронно-итерируемая.
TypeError: поток не асинхронно-итерируемый
Это удивительно,как я думал, что все readable-потоки, как правило, асинхронно-итерируемы, и что библиотека запросов возвращает поток, когда обратный вызов не предоставляется.Когда я заменяю request.get(...)
на fs.createReadStream(...)
на какой-то локальный файл, все работает как положено.
Возможно, библиотека request
не поддерживает это.Если да, что мне нужно сделать для обработки потоков ответов HTTP с помощью асинхронной итерации?
Использование Node.js 11.13 и request
2.88.0.