FRP与Bacon.js - 如何建模暂停按钮?

时间:2014-01-27 15:00:16

标签: javascript frp bacon.js

我试图让我的大脑Functional Reactive Programming,特别是FRP与Bacon.js,并且无法找到合适的组合器来创建暂停按钮。

var pauses = $('.pause').asEventStream('click');
var plays = $('.plays').asEventStream('click');
var ticks = Bacon.interval(500).whatGoesHere(???);

我想要一个暂停信号来切断滴答信号和播放信号以恢复它。这是我想要的大理石图表:

intervals   x x x x x x x x x x x x x x x x x x x x x x x
pauses              x                         x     x
plays                         x       x               x
ticks       x x x x           x x x x x x x x         x x

如果时间有点偏,这是好的,但这是我想要的效果。

我应该用什么组合来实现这个目标?

1 个答案:

答案 0 :(得分:7)

合并播放和暂停作为属性并使用它过滤间隔流。

var pauses = $('.pause').asEventStream('click').map(false);
var plays = $('.plays').asEventStream('click').map(true);
var isTicking = pauses.merge(plays).toProperty(true);
var ticks = Bacon.interval(500).filter(isTicking);