2017-08-05 25 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