【问题标题】:IE 7 error: "An outgoing call cannot be made since the application is dispatching an input-synchronous call"IE 7 错误:“无法进行传出调用,因为应用程序正在调度输入同步调用”
【发布时间】:2010-04-26 18:07:50
【问题描述】:

当我与我创建的 Web 应用程序交互时,我不时收到此错误(请参阅帖子标题)。该应用程序使用 Ajax 与服务器通信,但不做任何特定于 IE 的花哨的事情。在 Firefox 或 Safari 上运行相同的应用程序时,我没有收到此错误或任何其他错误。

您以前是否看到过此错误消息,知道可能导致此错误的原因,或者对如何处理此问题有任何建议?

【问题讨论】:

    标签: internet-explorer


    【解决方案1】:

    这是一个通用的 COM 错误。发生的事情是 AJAX 组件 XmlHttpRequest 是一个 COM 对象,因此遵循 COM 的规则。这里可能发生的是 XmlHttpRequest 正在调度传入事件。在对此事件的响应中,可能有代码调用了另一个公寓中的不同 COM 对象,这最终会导致死锁。 COM 检测到这一点并防止这种情况发生。

    一般建议是将此类应用程序分解为使用队列。不要立即响应事件,而是将事件保存到队列中并立即返回。然后使用计时器异步处理事件。

    【讨论】:

    • 所以您是说当 XmlHttpRequest 对象调用我的回调 JavaScript 函数时,我不应该立即运行代码,而是稍后使用 window.setTimeout() 运行它?
    • 是的,这就是我的建议。
    • 好的。我尝试这样做(即当 Ajax 响应到达时不立即运行 JS,而是稍后使用 setTimeout() 运行它),但不幸的是这没有帮助。
    • 您找到解决方案了吗?我在 IE 7 和 8 上遇到了同样的问题。
    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多