用http请求使用HighlandJSstream

我想要一个url的数组,并将其映射到每个url的网页排名数组。

我想用stream来试试,但我不确定自己在做什么。

我试了几件事,这是我登陆(不工作)的地方:

app.js

var getPageRank = require('pagerank'); var _ = require('highland'); var urls = [ 'google.com', 'yahoo.com', 'bing.com' ]; // Example usage of getPageRank getPageRank(urls[0], function(err, ranking) { console.log(ranking); }); var getPR = _.wrapCallback(getPageRank); _(urls).map(getPR).toArray(function (myAnswer) { console.log(myAnswer); }); 

的package.json

 { "name": "page-rank", "version": "0.0.0", "description": "", "main": "app.js", "scripts": { }, "author": "", "license": "ISC", "dependencies": { "highland": "^2.5.1", "pagerank": "^2.0.0" } } 

输出看起来是一个stream的数组,这似乎来自toArray()和谷歌的网页排名9奇怪。我不知道如何包装getPageRank,以便它等待callback中的值。

由于您有stream的stream,可以使用Stream.merge()Stream.flatten()将每个stream的值合并到一个新的stream中:

 _(urls).map(getPR).merge().toArray(function (myAnswer) { console.log(myAnswer); });