Ошибка IE 7: «Исходящий вызов не может быть выполнен, так как приложение отправляет синхронный вызов ввода»


2

Я получаю эту ошибку (см. Заголовок) время от времени, когда я взаимодействую с созданным веб-приложением. Приложение использует Ajax для связи с сервером, но не делает ничего особенного для IE. Я не получаю эту ошибку или любую другую ошибку при запуске того же приложения в Firefox или Safari.

Вы видели это сообщение об ошибке раньше, знаете, что может вызвать это, или есть рекомендации относительно того, как с этим бороться?

3

Это общая ошибка COM. Что происходит, так это то, что компонент AJAX, XmlHttpRequest является COM-объектом и, следовательно, соблюдает правила для COM. Вероятно, здесь происходит то, что XmlHttpRequest отправляет входящее событие. В ответ на это событие, вероятно, есть код, который вызывает другой объект COM в другой квартире, что в конечном итоге приведет к тупиковой ситуации. COM обнаруживает это и предотвращает это.

Общая рекомендация состоит в том, чтобы разбить этот тип приложения на использование очередей. Вместо того, чтобы немедленно реагировать на события, сохраните событие в очереди и немедленно отправьте. Затем обрабатывайте события асинхронно с помощью таймера.

  0

Итак, вы говорите, что когда объект XmlHttpRequest вызывает мою функцию JavaScript обратного вызова, я не должен запускать код сразу, а вместо этого запускать его немного позже с помощью window.setTimeout()? 22 фев. 092009-02-22 06:39:10

  0

Да, вот что я предлагаю. 23 фев. 092009-02-23 22:44:02

  0

Хорошо. Я попытался сделать это (например, не запускать JS сразу после получения ответа Ajax, но использовать setTimeout() для запуска его немного позже), но это, к сожалению, не помогает. 24 фев. 092009-02-24 01:26:24

  0

Вы нашли решение? Я застрял с той же проблемой в IE 7 и 8. 16 ноя. 112011-11-16 14:14:05