用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); });