Это подозрительно - хотя я не уверен, как он будет вести себя в разных браузерах. Что вы используете? Я не испытываю того же самого в FireFox.
MooTools сначала создает объект xhr, а затем запускает событие onRequest
:
https://github.com/mootools/mootools-core/blob/master/Source/Request/Request.js#L199-212
это ТОЛЬКО xhr.send(data);
- не должно быть никаких обстоятельств, при которых браузер блокирует поток пользовательского интерфейса и не запускает событие (сам обратный вызов является асинхронным).
посмотрите на этот пример на jsfiddle с 3-секундной задержкой ответа и сигналом внизу, который сработает, когда закончится, onRequest сработает правильно:
http://jsfiddle.net/dimitar/gDjJG/
в худшем случае, я полагаю, вы могли бы реорганизовать Request.send для отправки события до того, как оно создаст экземпляр объекта xhr, но я не вижу в этом необходимости. Использование синхронизации ajax является пораженческим и анти-паттерном, хотя потенциально может использоваться при проверке доступности имени пользователя или чего-либо еще.
edit , кажется, ломается в webkit и блокирует поток пользовательского интерфейса для обновлений DOM ДО xhr.send. Похоже, что он обновляет свойство элемента, но QUEUE устанавливает фактическое перекомпонование для дальнейшего использования. Я посмотрю, сможем ли мы изменить mootools для запуска события до установки xhr. хороший улов.
Я подал заявку, посмотрю ее на патч или сделаю, как предложено в worst case
бит:
https://github.com/mootools/mootools-core/issues/2317