我正在学习如何使用奇妙的Bacon.js库进行函数式反应编程。向属性或流添加处理程序很容易:
handler = function(value){... do something ...}
property.onValue(handler)如果我想取消这个订阅,比如(伪代码):
property.unsubscribe(handler)有什么方法可以用Bacon.js来实现吗?
发布于 2013-10-11 21:32:07
来自文档的“清理”部分:
调用订阅()调用返回的dispose()函数。
所以您必须保存onValue的返回
var dispose = property.onValue(handler)然后调用它来删除侦听器:
dispose();这是一个演示。
发布于 2013-10-12 06:38:52
以上两个答案都是正确的。但就我个人而言,我从未使用过这两种解决方案。事实上,它们的存在主要是为了内部目的和编写自定义组合器和集成。
因此,我推荐像take、takeWhile和takeUntil这样的组合子。在玻璃钢应用中,触发需要的信号通常可以建模为EventStream。在这种情况下,你可以
var data, stopper // EventStreams
data.takeUntil(stopper).onValue( .. )发布于 2013-10-11 21:36:49
来自文档
stream.subscribe(f)向事件流订阅给定的处理程序函数。函数将接收事件对象(见下文)。订阅()调用返回一个取消订阅函数,您可以调用该函数来取消订阅。还可以通过从处理程序函数返回Bacon.noMore作为对事件的答复来取消订阅。
https://stackoverflow.com/questions/19327507
复制相似问题