私は bacon.js を使用しており、信号が 2 つのソースから放出される状況があります。
sourceA :: EventStream a
sourceB :: EventStream Bool
が起動されると、 からシグナルが起動された場合を除き、永続的にsourceA
実行される何らかのアクションをトリガーする必要があります。したがって、構文的には次のようになります。repeatedly
sourceB
aAction = sourceA
. repeatedly (200, [1,2,3])
. until (sourceB)
だから私は基本的にアナログtakeWhile
やtakeUntil
コンビネータを求めていますが、ソースやドキュメントでそのような関数を見つけることができません. 何かご意見は?
ジェネリックコンビネータがあればさらに良い
throttleWhen :: Bool -> EventStream a
また
throttleWhen' :: EventStream Bool -> EventStream a
何らかの条件でベーコン イベント ストリームを終了させる場合、どのように実装すればよいでしょうか?
以下のこのソリューションに注意してください。
faAction = sourceA . repeatedly (200, [1,2,3])
aAction = faAction . takeUntil (sourceB)
派生ストリームaAction
を抑制しますが、元のストリームは抑制しません。