将 HighlandJS 流与 http 请求一起使用
Using HighlandJS streams with http requests
我想获取一个 url 的数组并将其映射到每个 url 的 pagerank 数组。
我想尝试使用流,但不确定我是否理解我在做什么。
我已经尝试了几件事,这是我着陆的地方(不工作):
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"
}
}
输出似乎是一个流数组,从 toArray() 和 google 的页面排名 9 出来似乎很奇怪。我不知道如何包装 getPageRank 以便它等待 return 回调中的值。
由于您有多个流,您可以使用 Stream.merge()
或 Stream.flatten()
将每个流中的值合并到一个新流中:
_(urls).map(getPR).merge().toArray(function (myAnswer) {
console.log(myAnswer);
});
我想获取一个 url 的数组并将其映射到每个 url 的 pagerank 数组。
我想尝试使用流,但不确定我是否理解我在做什么。
我已经尝试了几件事,这是我着陆的地方(不工作):
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"
}
}
输出似乎是一个流数组,从 toArray() 和 google 的页面排名 9 出来似乎很奇怪。我不知道如何包装 getPageRank 以便它等待 return 回调中的值。
由于您有多个流,您可以使用 Stream.merge()
或 Stream.flatten()
将每个流中的值合并到一个新流中:
_(urls).map(getPR).merge().toArray(function (myAnswer) {
console.log(myAnswer);
});