0
我有一個異步節點流的數組,我想並行使用是否有一個簡單的方法來做到這一點在高地js?我試圖讓所有這些數組通過聚合函數。管道節點流與高地js並行
我有一個異步節點流的數組,我想並行使用是否有一個簡單的方法來做到這一點在高地js?我試圖讓所有這些數組通過聚合函數。管道節點流與高地js並行
你希望做這樣的事情:
const request = require('request');
const nodeStreams = [request('http://www.example.com'),
request('http://www.example1.com')];
hl(nodeStreams)
.map(hl)
.merge()
.map(JSON.parse)
.each(console.log);
我將解釋什麼是怎麼回事。您從一組節點流開始,然後使用map
將它們轉換爲高地流,以便您擁有一串流。 merge
函數然後將所有值合併成單個流。所有這些數據流將被並行讀取,但map(JSON.parse)
只能一次對它們進行調用。如果你想paralellise更多的計算,那麼你要你打電話merge
之前做盡可能多的與每個流:
hl(nodeStreams)
.map(stream => hl(stream).map(JSON.parse))
.merge().each(console.log);
如果請求事項的順序,那麼你應該使用parallel
但這導致性能因爲該功能必須跟蹤所有不同的流。
類似的情況,但不是閱讀文件我試圖消耗多個http請求(大約一百),然後管道他們到一個json解析器提取字段。 – user3791980
很酷。原理完全一樣,所以我更新了與http請求一起工作的答案。 – Stefano