signals.js 组件之间定义和触发事件的消息传递的库插件

signals.js 用于在JavaScript中的软件组件之间定义和触发基于事件的消息的库

signals.js 用于在JavaScript中的软件组件之间定义和触发基于事件的消息的库,它是一个类似于Event Emitter / Dispatcher或Pub / Sub系统的事件/消息系统,主要区别在于每个事件类型都有自己的控制器功能,而不依赖于字符串来广播/订阅事件,它还具有通常在其他系统上不可用的一些额外功能。

Signal类主要属性及方法

var mySignal = new Signal();//mySignal 是 Signals 类的一个对象。


Signal类属性

mySignal.active = false/true; //该信号监听调度是否停止,默认true可用
mySignal.memorize = false/true; //该信号是否记录之前的调度参数并且自动执行,默认为false不记录
mySignal.VERSION = ''; //记录当前信号的版本


Signals类方法

add();
添加监听器

//add(listener, listenerContext, priority);
//listener 属于function类型,是信号操作函数
//listenerContext 属于object类型,是监听器的执行上下文环境,可选
//priority 属于Number类型,是该监听器的优先级,高优先级的先执行,默认为0,可选
//返回值是 SignalBinding 类型


mySignal.add(listener, listenerContext, priority);


addOnce();添加一次性监听器,运行完一次即可自动remove

//add(listener, listenerContext, priority);
//listener 属于function类型,是信号操作函数
//listenerContext 属于object类型,是监听器的执行上下文环境,可选
//priority 属于Number类型,是该监听器的优先级,高优先级的先执行,默认为0,可选
//返回值是 SignalBinding 类型
mySignal.addOnce(listener, listenerContext, priority);


dispatch();调度/广播信号到所有监听器,加入队列,即让监听器运行

//dispatch(params),paras可选
mySignal.dispatch();


dispose();删除所有相关的信号对象和绑定,无返回值

mySignal.dispose();
forget();清除记忆的arguments,无返回值

mySignal.forget();


getNumListeners();返回该信号绑定的监听器的个数

mySignal.getNumListeners();
halt();停止分发事件,blocking the dispatch to next listeners on the queue.

mySignal.halt();


has();检查该信号是否与特定监听器绑定

//listener ; 监听器的执行函数
//context ;执行的上下文环境,可选
// 返回值为true 或者 false
mySignal.has(listener, context);
remove();删除监听器

//listener ; 监听器的执行函数
//context ;执行的上下文环境,可选
//返回监听器的执行函数handler
mySignal.remove(listener, context);
removeAll();删除该信号的所有监听器

mySignal.removeAll();
toString();返回当前的object的

SignalBinding类

var binding = myObject.started.add(function(){
alert('foo bar');
});


等同于

//SignalBinding(signal, listener, isOnce, listenerContext(可选), priority(可选))
var binding = new SignalBinding(myObject.started, handler, false, myObject, 0)
function handler(){
alert('foo bar');
}


SignalBinding类属性

binding.active = false/true; //该信号监听调度是否停止,默认true可用
binding.context = object; //绑定的上下文环境
binding.params = ''; //默认在Signal.dispatch()期间传递给监听器的参数


SignalBinding类方法

binding.detach();//分离信号和监听器
binding.execute();//手动执行
binding.getListener();//返回绑定的特定监听函数
binding.getSignal();//返回绑定的特定信号量
binding.isBound();//判断是否绑定成功,true or false
binding.isOnce();//判断是否是一次绑定
binding.toString()//转换为字符串


第一步引入bfwone,加载插件signals

第二步执行插件代码

示例如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>
    <script id="bfwone" data="dep=signals&err=0" type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bfwone.js"></script>
    <script type="text/javascript">
        bready(function() {
            //custom object that defines a `started` signal
            var myObject = {
                started: new signals.Signal()
            };

            // a handler function
            function onStarted(param1, param2) {
                alert(param1 + param2);
            }

            // listen for the `started` signal and then run the `onStarted` handler
            myObject.started.add(onStarted); //add listener

            // dispatch the `started` signal, running the handler, passing in parameters
            myObject.started.dispatch('foo', 'bar');

        });
    </script>
</head>
<body>

</body>
</html>

官网 https://github.com/millermedeiros/js-signals
立即下载signals.js查看所有js插件

网友评论0

程序员在线工具箱