【问题标题】:nodejs express stream from array来自数组的nodejs表达流
【发布时间】:2018-02-05 09:22:18
【问题描述】:

我正在构建一个应用程序,我需要将数据流式传输到客户端,我的数据只是一个对象数组。 这是构成数组的 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)
    }

现在我等待循环完成它的工作然后我将整个音乐数组发送到客户端,我想使用流将音乐数组一一发送到客户端而不是等待循环完成

【问题讨论】:

    标签: javascript arrays node.js steam


    【解决方案1】:

    使用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 将利用您的流量控制,最重要的是 - 它会比任何其他流式传输框架更快地获得结果。

    编辑:我写了几行代码来使这个用例在超燃冲压发动机中更容易。 :)

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多