GWT 事件处理程序的触发顺序

Chr*_*s J 5 java gwt

是否有触发 GWT EventHandlers 的已知顺序?

IE。如果我有一个扩展 ListBox 的类并从构造函数添加一个 EventHandler ,我是否可以确定这个 Handler 将在另一个 Handler 之前被调用,后者稍后由周围的类添加?

同样,如果子类采用构造函数:

Subclass() {
    super();
    addChangeHandler(new ChangeHandler() {
        // ...
    });
}
Run Code Online (Sandbox Code Playgroud)

但是超类具有相同的构造函数,它添加了一个 ChangeHandler:

Superclass(){
    addChangeHandler(new ChangeHandler() {
        // ...
    });
}
Run Code Online (Sandbox Code Playgroud)

当超类的构造函数被调用并在子类之前添加处理程序时,我们可以假设它们将被触发的顺序吗?

非常感谢,这让我很困惑。

克里斯。

Car*_*ell 5

触发确实按照添加处理程序的顺序发生。据我所知,这在 javadoc 中没有记录,但我深入研究了 GWT 代码和 com.google.gwt.event.shared.HandlerManager.HandlerRegistry.fireEvent(GwtEvent, boolean) 方法最终在事件时被调用被解雇。

在某些情况下,所有事件都以相反的顺序触发,但这似乎与主要小部件无关。如果您在 com.google.gwt.event.shared.HandlerManager.HandlerManager(Object, boolean) 上执行调用层次结构,您将看到谁在启用反向触发的情况下调用 HandlerManager。