cubicmushroom / js-pub-sub
轻量级JavaScript PubSub库,包括回调优先级和取消功能
dev-master
2013-01-20 02:16 UTC
This package is not auto-updated.
Last update: 2024-09-14 12:14:16 UTC
README
使用 return false
支持优先级和中断的JavaScript PubSub库。
简单示例
要订阅一个主题,简单使用 CMPubSub.subscribe() 方法...
var callback = function(msg) {
alert(msg);
};
CMPubSub.sub('topicName', callback);
注意: 主题不需要预先定义。您可以在 CMPubSub 知道它之前订阅它。
并且要发布到主题...
var obj = {
some: 'info'
};
CMPubSub.pub('topicName', obj, 1, 2, 'a', 'b');
在这个示例中,callback
函数将使用参数 [1, 2, 'a', 'b']
被调用。在回调内部,this
将指向 obj 对象
注意: 传递原始类型变量(数字或字符串)不是通过引用进行的,因此对它的任何更改都不会在回调之后持续。非原始变量是通过引用传递的,因此您可以修改对象,并且更改将得以持续。
传递上下文(this
)
为了允许在订阅者回调中设置 this
,CMPubSub.sub()
方法的回调参数可以包含要使用的上下文对象。如果需要,回调参数成为包含 2 项的数组... 第 1 项是回调函数,第 2 项是上下文对象。
优先级回调
您可以在 CMPubSub.sub()
调用中添加第 3 个参数来设置回调的优先级。优先级需要是一个数字,其中 1 是最高优先级。如果没有提供,则默认优先级为 9。
中断发布
回调可以中断发布过程,并通过返回 false
使 CMPubSub.pub()
方法返回 false。这将防止调用后续回调,并向调用函数提供反馈,表明过程已被中断。如果发布没有被中断,或者没有订阅者,那么 CMPubSub.pub()
调用将返回 true
。
路线图
- 添加取消订阅的能力;
- 添加主题命名空间(如jQuery所做),以便更容易取消事件订阅;