事件(Event)
详细描述
EventWatcher 是所有控件的最基础类,它为应用程序提供了一个用于发出和处理事件的机制。
EventWatcher 允许开发者通过 bind() 函数将回调函数绑定到命名事件上。通过 emit() 函数可以触发事件。当 EventWatcher 发出一个事件时,所有绑定到该事件的回调函数都会同步被调用。
以下示例展示了一个简单的 EventWatcher 和一个回调函数的使用:
const watcher = new EventWatcher();
watcher.bind('event', (): void => {
console.log('Function is called!');
});
watcher.emit('event');
运行结果如下:
Function is called!
如果为同一个命名事件绑定了多个回调函数,则只有最后一个绑定的回调函数会在事件被触发时执行:
const watcher = new EventWatcher();
watcher.bind('event', (): void => {
console.log('Function A is called!');
});
watcher.bind('event', (): void => {
console.log('Function B is called!');
});
watcher.emit('event');
运行结果如下:
Function B is called!
emit() 函数允许传递任意数量的参数到回调函数中:
const watcher = new EventWatcher();
watcher.bind('event', (a: number, b: number): void => {
console.log('a: ', a);
console.log('b: ', b);
});
watcher.emit('event', 1, 2);
运行结果如下:
a: 1
b: 2
可以使用 unbind() 函数移除指定事件的回调函数。被移除后,绑定到该事件的所有回调函数都不会被触发:
...
watcher.unbind('event');
通过设置 blocked 属性,可以阻止 EventWatcher 的事件触发。这意味着即使发出了事件,也不会调用绑定的任何回调函数:
...
watcher.blocked = true;
watcher.emit('event'); // No callback functions are triggered.
watcher.blocked = false;