2017-08-05 47 views
0

我在弄清楚在JavaScript中处理大型数据集的最佳策略是什么。我有四个小时的数据读取间隔100毫秒的文件。如何在javascript中处理海量数组

这会变成一维数组,但我无法一次加载所有东西。我应该尝试将它分解成更小的数组,并且是否存在最佳数组大小?

任何意见,将不胜感激,这是我第一次不得不处理这类问题。有些阵列只有500kb,但它们仍不会作为单个模块输出加载。 AJAX是否因为某种原因更好地工作?如果是这样,为什

+2

这是在浏览器中或在Nodejs中?另外,请包括您的代码。 – Svenskunganka

+0

你一定要使用批量大小来通过网络获取数据。 –

+0

也许网络工作者和套接字 – JGFMK

回答

1

您可以使用fetch().getReader()属性Response(返回ReadableStream)读取数据作为流。

fetch("/path/to/server") 
.then(response => response.body.getReader()) 
.then(reader => { 
    const processStream = ({done, value}) => { 
      if (done) { 
      return reader.closed; 
      } 
      // do stuff with `value`:`Uint8Array` chunk of data 
      return reader.read().then(processStream); 
     } 
    return reader.read().then(processStream);     
}) 
.then(() => "done reading stream") 
.catch(err => console.error(err)); 
+0

@MFave您还可以使用'.pipeTo()'将'ReadableStream'管道连接到一个'WritableStream'实例,参见[通过stdin接收数据并将其作为变量/数组存储](https://stackoverflow.com/q/ 45427642 /) – guest271314