我正在使用 bacon.js 并且在某些情况下信号从两个来源发出:
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
,但不限制原始流。