1

我想获取一个 url 数组并将其映射到每个 url 的 pageranks 数组。

我想用流来尝试它,但我不确定我是否理解我在做什么。

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

应用程序.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);
});

包.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"
  }
}

输出似乎是一个流数组,从 toArray() 和 google 的页面排名 9 出来似乎很奇怪。我不知道如何包装 getPageRank 以便它等待在回调中返回值。

4

1 回答 1

1

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

_(urls).map(getPR).merge().toArray(function (myAnswer) {
    console.log(myAnswer);
});
于 2015-09-15T23:36:24.543 回答