在可观察的淘汰赛中取消订阅
Unsubscribe in Observable KnockOutJS
我目前正在使用KnockOut JS,我进行了一些研究,当可观察量被通知时,它将触发一个像这样的函数
function FunctionToSubscribe()
{
}
var TestObservable = ko.observableArray([]);
TestObservable.subscribe(FunctionToSubscribe);
我在此活动中订阅FunctionToSubscribe
我目前正在想有没有办法取消订阅它? 就像我们在 C# 中所做的那样? 在取消订阅事件时,任何人都对此有想法???
subscribe
函数返回 "subscription" 对象,该对象具有可用于取消订阅的dispose
方法:
var TestObservable = ko.observableArray([]);
var subscription = TestObservable.subscribe(FunctionToSubscribe);
//call dispose when you want to unsubscribe
subscription.dispose();
另请参阅文档中:显式订阅可观察量
您可以使用
dispose
方法。
function FunctionToSubscribe()
{
}
var TestObservable = ko.observableArray([]);
// subscribe
var subscriber = TestObservable.subscribe(FunctionToSubscribe);
// unsubscribe
subscriber.dispose();
就我而言,我需要暂时暂停订阅并做一些工作,所以我最终这样做了:
ko.subscribable.fn.suspendableSubscribe = function (callback, callbackTarget, event) {
var isSuspended = false;
return ko.utils.extend(this.subscribe(function () {
if (!isSuspended)
return callback.apply(this, arguments);
}, callbackTarget, event), {
suspend: function () { isSuspended = true; },
resume: function () { isSuspended = false; }
});
};
用法
var name = ko.observable('CodingYoshi');
var subscription = name.suspendableSubscribe(function(){ // code... });
subscription.suspend();
name('CodingYoshi2');
subscription.resume();
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript取消隐藏和隐藏表单中的某些元素
- 如何销毁/删除/取消绑定SnapSVG.js
- 滚动然后捕捉到顶部而不是取消捕捉
- 取消绑定主干视图事件
- 如何取消object.prototypes javascript的一个函数
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 使用javascript在页面加载时取消选中所有复选框
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- jquery选中并取消选中所有操作
- IE11中的第二个调用取消了第一个Fetch API调用
- 如何知道使用socket.io订阅/取消订阅频道
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 如何在javascript中取消选择文本框
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- (取消)使用单独的复选框激活复选框列表
- 如何取消选择所选选项并将JqueryMobile中选择的值刷新为1st