Skip to content
廖健 edited this page Jun 18, 2013 · 4 revisions

Signal

Qt利用信号与槽(signals/slots)机制取代传统的callback来进行对象之间的沟通,JPE Signal也是按照这个思想来做的。

监听一个信号

var Signal = require("JPE/Signal");
var signal = new Signal();
var listener = function(signal){
    console.log("signal received: " + signal);
}
signal.add(listener);
signal.dispatch(signal);

移除信号监听

var Signal = require("JPE/Signal");
var signal = new Signal();
var listener = function(){
    signal.remove(listener);
}
signal.add(listener);
signal.dispatch();

移除所有信号监听

var Signal = require("JPE/Signal");
var signal = new Signal();
var listener = function(){
    signal.removeAll();
}
signal.add(listener);
signal.dispatch();

只监听一次并自动移除的信号

//"signal received"只会输出一次
var Signal = require("JPE/Signal");
var signal = new Signal();
var listener = function(){
    console.log("signal received");
    signal.dispatch();
}
signal.addOnce(listener);
signal.addOnce(listener);
signal.dispatch();

信号发送时携带参数

var signal = new JPE.Signal();
var listener = function(p1, p2){
    console.log("[param1]: " + p1 + " [param2]:" + p2);
}
signal.add(listener);
signal.dispatch("hello", "signal");
Clone this wiki locally