2016-01-19 78 views

回答

1

你希望做這樣的事情:

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但這導致性能因爲該功能必須跟蹤所有不同的流。

+0

類似的情況,但不是閱讀文件我試圖消耗多個http請求(大約一百),然後管道他們到一個json解析器提取字段。 – user3791980

+0

很酷。原理完全一樣,所以我更新了與http請求一起工作的答案。 – Stefano