1

私は bacon.js を使用しており、信号が 2 つのソースから放出される状況があります。

sourceA :: EventStream a
sourceB :: EventStream Bool

が起動されると、 からシグナルが起動された場合を除き、永続的にsourceA実行される何らかのアクションをトリガーする必要があります。したがって、構文的には次のようになります。repeatedlysourceB

aAction = sourceA
    . repeatedly (200, [1,2,3])
    . until      (sourceB)

だから私は基本的にアナログtakeWhiletakeUntilコンビネータを求めていますが、ソースやドキュメントでそのような関数を見つけることができません. 何かご意見は?

ジェネリックコンビネータがあればさらに良い

throttleWhen :: Bool -> EventStream a

また

throttleWhen' :: EventStream Bool -> EventStream a

何らかの条件でベーコン イベント ストリームを終了させる場合、どのように実装すればよいでしょうか?

以下のこのソリューションに注意してください。

faAction = sourceA  . repeatedly (200, [1,2,3])
aAction  = faAction . takeUntil  (sourceB) 

派生ストリームaActionを抑制しますが、元のストリームは抑制しません。

4

1 に答える 1