Я создаю приложение, которое мне нужно передавать данные клиенту, мои данные - это просто массив объектов. это цикл for, который делает массив
for(let i =0;i<files.length;i++){
try {
let file = files[i]
var musicPath = '${baseDir}/${file}'
let meta = await getMusicMeta(musicPath)
musics.push(meta)
}
прямо сейчас, я жду, когда цикл завершит работу, тогда я отправлю весь массив музыки клиенту, я хочу использовать поток для отправки музыкального массива один за другим клиенту, а не ждать завершения цикла
Используйте scramjet и отправьте поток прямо на ответ:
const {DataStream} = require("scramjet");
// ...
response.writeHead(200);
DataStream.fromArray(files)
// all the magic happens below - flow control
.map(file => getMusicMeta('${baseDir}/${file}'))
.toJSONArray()
.pipe(response);
Scramjet будет использовать ваш контроль потока и, что самое важное, - он получит результат быстрее, чем любая другая инфраструктура потоковой передачи.
Edit: Я написал пару строк кода, чтобы сделать этот вариант использования проще в scramjet. :)