如何将Highland.js或Node.js流限制为每秒一个对象?

Jas*_*son 5 javascript stream node.js highland.js

我希望能够将呼叫限制为getPagerank()每秒一个.我尝试了各种各样的东西,但无法让它发挥作用.

var pagerank = require('pagerank');
var _ = require('highland');

var urls = [
    'google.com',
    'yahoo.com',
    'bing.com'
];

var getPagerank = _.wrapCallback(pagerank);

// I want to throttle calls to getPagerank to 1/sec
var pageRanks = _(urls)
    .map(getPagerank)
    .merge();

pageRanks.toArray(function(arr) {
    console.log(arr);
});
Run Code Online (Sandbox Code Playgroud)

Yur*_*bin 4

您可以使用.ratelimit()

例如,这将限制流每秒处理数组的一项

var _ = require('highland');

_([1,2,3,4]).ratelimit(1, 1000).map(function(x){
  return String(x);
})
.pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)