每秒减少流量到一个块

时间:2014-05-21 04:27:55

标签: javascript node.js stream highland.js

我有一个逐行读取文件的高地流,我希望将其减慢到每秒一个块。我查看了文档,我发现的唯一功能是throttle()debounce()。两个下降值。我需要保留所有价值观,只是放慢速度。

2 个答案:

答案 0 :(得分:3)

我建议将块映射到延迟流并对它们进行排序:

var _ = require('highland');

function delay(x) {
    return _(function (push, next) {
        setTimeout(function () {
            push(null, x);
            push(null, _.nil);
        }, 1000);
    });
}

_([1, 2, 3, 4]).map(delay).series().each(_.log);

这里使用的延迟函数似乎很容易推广,所以如果你有兴趣发送拉请求,我很乐意回顾它:)

答案 1 :(得分:0)

这与Caolan的功能版本相同,但可配置。我为自己制作了另一个版本,它跳过了第一个元素的延迟。

var _ = require('highland');

function delay(delayMs) {
  return function(x) {
    return _(function(push, next) {
      return setTimeout((function() {
        push(null, x);
        return push(null, _.nil);
      }), delayMs);
    });
  };
}

_([1, 2, 3, 4]).map(delay(1000)).series().each(_.log);