将流减慢到每秒一个块



我有一个highland stream,它正在逐行读取文件,我想将其减慢到每秒一个块。我看了一下文档,我只找到了throttle()debounce()的函数。这两个都是下降值。我需要保留所有的值,只是放慢速度。

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

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

这里使用的延迟函数似乎很容易概括,所以如果你有兴趣在此发送拉请求,我很乐意审查它:)

这是与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);

相关内容

  • 没有找到相关文章

最新更新