3

アプリケーションに単純な pub-sub を実装したいので、KO subscribable が有望なようです。

次のコードがあります。

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 が期待する 2 番目のパラメータは何ですか?

Knockout の Web サイトではそれについて語られていないので、コードを調べたところ、次のことがわかりました。

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));

callbackTarget を渡していないため、pub/sub の実装が機能することは明らかであり、代わりにcallbackが使用されます。

おまけの質問:

いつcallbackTargetを使用する必要がありますか?

誰でもその使用例を提供できますか?

4

2 に答える 2