2

タイトルが示すcollectように、Reactive-Banana に見られるものと同様に、同時に発行されたイベントをリストに収集するコンビネーターを探しています。言い換えれば:

collect :: EventStream a -> EventStream [a]
collect [(time1, e1), (time1, e2)] = [(time1, [e1,e2])]

まだ存在しない場合、どのように実装しますか? ソースを熟読すると、イベントの発生の「時間」を読み取る方法がわかりません。たとえば、Bacon.Eventクラスはそれ自体の発生時間を記録していないようですか? Javascript のネイティブ関数を使用して事後new Date().getTime()イベントをマークし、任意の時間枠内で発生するイベントが実際には「同時」であると主張する必要があります。

4

1 に答える 1

2

Bacon.js にはイベントの同時性という概念はありません。イベントにはタイムスタンプもありません。

を使用して、ほぼ同時のイベントをグループ化できますstream.bufferWithTime(1)。ほぼ同時のイベントの配列のストリームを取得します。

出力に時間が必要な場合stream.map(f)は、配列と現在の時間を組み合わせる関数を使用できます。

したがって、次のようなものです。

stream.bufferWithTime(1).map(function(events) {
  return {
    events: events,
    timestamp: new Date().getTime()
  }
})
于 2013-10-01T06:20:56.487 に答える