3

ファイルを 1 行ずつ読み取るハイランド ストリームがあり、その速度を 1 秒あたり 1 チャンクに落としたいと考えています。ドキュメントを調べたところ、見つかった関数は と だけでしthrottle()debounce()。これらは両方とも値を落とします。すべての値を保持し、速度を遅くする必要があります。

4

2 に答える 2

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

ここで使用されている遅延関数は一般化するのがかなり簡単に思えるので、これについてプル リクエストを送信することに興味がある場合は、喜んでレビューします :)

于 2014-05-22T09:22:29.730 に答える
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);
于 2015-07-13T15:49:24.670 に答える