アプリケーションに単純な 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を使用する必要がありますか?
誰でもその使用例を提供できますか?