首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Bacon.js中取消订阅处理程序?

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

Stack Overflow用户
提问于 2013-10-11 21:25:59
回答 3查看 1.3K关注 0票数 2

我正在学习如何使用奇妙的Bacon.js库进行函数式反应编程。向属性或流添加处理程序很容易:

代码语言:javascript
复制
handler = function(value){... do something ...}
property.onValue(handler)

如果我想取消这个订阅,比如(伪代码):

代码语言:javascript
复制
property.unsubscribe(handler)

有什么方法可以用Bacon.js来实现吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-11 21:32:07

来自文档的“清理”部分:

调用订阅()调用返回的dispose()函数。

所以您必须保存onValue的返回

代码语言:javascript
复制
var dispose = property.onValue(handler)

然后调用它来删除侦听器:

代码语言:javascript
复制
dispose();

这是一个演示。

票数 3
EN

Stack Overflow用户

发布于 2013-10-12 06:38:52

以上两个答案都是正确的。但就我个人而言,我从未使用过这两种解决方案。事实上,它们的存在主要是为了内部目的和编写自定义组合器和集成。

因此,我推荐像taketakeWhiletakeUntil这样的组合子。在玻璃钢应用中,触发需要的信号通常可以建模为EventStream。在这种情况下,你可以

代码语言:javascript
复制
var data, stopper // EventStreams
data.takeUntil(stopper).onValue( .. )
票数 11
EN

Stack Overflow用户

发布于 2013-10-11 21:36:49

来自文档

stream.subscribe(f)向事件流订阅给定的处理程序函数。函数将接收事件对象(见下文)。订阅()调用返回一个取消订阅函数,您可以调用该函数来取消订阅。还可以通过从处理程序函数返回Bacon.noMore作为对事件的答复来取消订阅。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19327507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档