nodejs экспресс-поток из массива

1

Я создаю приложение, которое мне нужно передавать данные клиенту, мои данные - это просто массив объектов. это цикл 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)
    }

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

Теги:
arrays
steam

1 ответ

0

Используйте 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. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню