跳到主要内容

事件(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;