我试图让我的大脑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
如果时间有点偏,这是好的,但这是我想要的效果。
我应该用什么组合来实现这个目标?
答案 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);