Цикл событий браузера - это поток, запускаемый браузером, который постоянно сканирует и запускает различные события, как это звучит. По мере возникновения событий они помещаются в очередь событий и по очереди выполняются одним потоком событий. Ваш javascript не должен создавать свои собственные циклы, ожидающие его завершения или чего-то в этом роде ... он заблокирует этот один непрерывный поток цикла событий. Вместо этого вы должны использовать что-то вроде setTimeout или setInterval и проверять, какие условия вы ожидаете, чтобы браузер мог работать, пока он «ждет».
GWT хорош тем, что может несколько отрегулировать этот процесс, используя планировщик - в вашем случае, когда вы хотите запустить что-то после завершения цикла событий, вы, вероятно, захотите использовать scheduleFinally или scheduleDeferred. Он вставит обработчик для части кода в очередь событий, так что он будет запускаться после всего остального кода в текущем контексте выполнения (текущий контекст выполнения == везде, где вы находитесь в текущей иерархии объектов JavaScript с окном в качестве корня объект), но перед следующим событием, помещенным в очередь.