【问题标题】:Slowing stream down to one chunk per second将流减慢到每秒一个块
【发布时间】:2014-05-21 04:27:54
【问题描述】:

我有一个高地流正在逐行读取文件,我想将其减慢到每秒一个块。我浏览了文档,发现的唯一函数是throttle()debounce()。这两个值都下降了。我需要保持我所有的价值观,只是放慢速度。

【问题讨论】:

    标签: javascript node.js stream highland.js


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我可能会这样做。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 2015-12-05
      相关资源
      最近更新 更多