如何取消订阅Bacon.js中的处理程序?

jpa*_*dvo 2 bacon.js

我正在学习使用梦幻般的Bacon.js库进行功能反应式编程.将处理程序添加到属性或流很容易:

handler = function(value){... do something ...}
property.onValue(handler)
Run Code Online (Sandbox Code Playgroud)

在某个地方说我要取消这个订阅,就像这样(伪代码):

property.unsubscribe(handler)
Run Code Online (Sandbox Code Playgroud)

有没有办法用Bacon.js做到这一点?

rai*_*ska 11

以上两个答案都是正确的.就个人而言,我从未使用过任何一种解决方案.实际上,它们主要用于内部目的和编写自定义组合器和集成.

所以我建议组合使用take,takeWhiletakeUntil.在FRP应用程序中,触发需求的信号通常可以建模为EventStream.在那种情况下你可以做到

var data, stopper // EventStreams
data.takeUntil(stopper).onValue( .. )
Run Code Online (Sandbox Code Playgroud)

  • 好吧,例如,如果你想对鼠标移动作出反应并在按下某个键时停止它,你将执行`mouseMoves.takeUntil(keyPress).onValue(..)`.或者如果你只想做一次反应,你会做`clicks.take(1).onValue(..)`. (3认同)