[ Original post on StackOverflow http://stackoverflow.com/questions/40130383/howto-use-gwt-evenbus-to-schedule-openevent-closeevent-sequence ]
Say we have few handlers for both events. The goal is to make sure, that all *OpenEvent handlers*finish before any of *CloseEvent handlers* start their job. The old *EventBus* had a reverse order flag, which sometimes helped greatly in these particular cases. I.e. a handler, responsible for launching some process which leads to *CloseEvent* being fired (i.e. event emitter), usually registers itself to a bus first. Now, due to a synchronous nature of javascript each handler of *OpenEvent* ends his job before the next handler starts. In my app the first *OpenHandler* added to a bus is a *CloseEvent* emitter. Therefore I get an undesirable sequence of calls: *1st handler of OpenEvent* -> *all CloseEvent handlers* -> *the rest of OpenEvent handlers*. *My question is:* what's the best practice to establish the desirable behavior? So far as a workaround I use *Scheduler.scheduleDeferred(Scheduler.ScheduledCommand cmd)* to enqueue*EventBus.fireEventFromSource(Event event, Object source)* of *CloseEvent* call to the next browser's event loop tick. p.s. My current thoughts are as follows. I don't want to rely of *Timer* or *Scheduler* (though it might be the only option, which I'm not sure about). Also I have no interest in introducing any flag variables, responsible for tracking which event occurred first. Instead, if one looks closer into the *SimpleEventBus* code, there's a *firingDepth* counter variable, which only works to delay*addHandler(...)* and *removeHandler(...)* calls. It would be great, if same logic could be applied to order call sequences of handlers for different events. -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/google-web-toolkit. For more options, visit https://groups.google.com/d/optout.
