介绍


$.Callbacks() 指一个多用途的回调函数列表对象,提供了一种强大的方法来管理回调函数队列。将 $.Callbacks 作为一个文章队列来实现文章的发布和订阅。

代码实现


var topics = {};

$.weixin = function( id ) {
    var callbacks,
        method,
        topic = id && topics[ id ];

    if ( !topic ) {
        callbacks = $.Callbacks();
        topic = {
            publish: callbacks.fire,
            // 调用subscribe 将订阅回调函数存放在当前topic_list中
            subscribe: callbacks.add,
            unsubscribe: callbacks.remove
        };
        if ( id ) {
            topics[ id ] = topic;
        }
    }
    return topic;
};

// 小王订阅
$.weixin( "js" ).subscribe(function(data) {
    console.log('小王收到的内容:' + data);
});
// 小王的儿子订阅
$.weixin( "js" ).subscribe(function(data) {
    console.log('小王儿子收到的内容:' + data);
});
// 小李订阅
$.weixin( "nodejs" ).subscribe(function(data) {
    console.log('小李收到的内容:' + data);
});

// 发布
$.weixin( "js" ).publish( "Hello js!" );
$.weixin( "nodejs" ).publish( "Hello nodejs!" );

运行结果:

版权声明:本文为博主原创文章,转载请添加原文地址
暂无评论