ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-KnockoutJS,使用可订阅的. callbackTarget

2019-11-22 16:34:43  阅读:223  来源: 互联网

标签:knockout-js publish-subscribe javascript


我想在我的应用程序中实现一个简单的pub-sub,因此可订阅的KO似乎很有希望.

我有以下代码.

var announcer = new ko.subscribable();

var s1 = announcer.subscribe(function(val){
    console.log('subscriber1: ' + val);
}, null, 'news');

var s2 = announcer.subscribe(function(val){
    console.log('subscriber2: ' + val);
}, null, 'gossip');

var s3 = announcer.subscribe(function(val){
    console.log('subscriber3: ' + val);
}, null, 'news');

在“新闻”频道中发布

announcer.notifySubscribers('good news', 'news')

/* Outputs: */

subscriber1: good news
subscriber3: good news 

在“闲话”频道中发布

announcer.notifySubscribers('hipster news', 'gossip')

/* Outputs: */

subscriber2: hipster news 

到目前为止,它似乎仍然有效…

我的问题是:

subscribable.subscribe期望的第二个参数是什么?

Knockout网站从不谈论它,所以我去了代码,发现了这一点:

subscribe: function (callback, callbackTarget, event) {
    event = event || defaultEvent;
    var boundCallback = callbackTarget ? callback.bind(callbackTarget) : callback;

var subscription = new ko.subscription(this, boundCallback, function () {
        ko.utils.arrayRemoveItem(this._subscriptions[event], subscription);
    }.bind(this));

很明显,我的pub / sub实现有效,因为我没有传递callbackTarget,所以改用callback.

奖励问题:

我们什么时候应该使用callbackTarget?

任何人都可以提供其用法示例吗?

解决方法:

订阅功能的第二个参数用于设置此上下文.如果不想在回调函数中使用此函数,则可以传递null.

标签:knockout-js,publish-subscribe,javascript
来源: https://codeday.me/bug/20191122/2061109.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有