【问题标题】:Onreadystatechange callback behaviour for XMLHttpRequestXMLHttpRequest 的 Onreadystatechange 回调行为
【发布时间】:2010-05-31 19:58:12
【问题描述】:

如果 XMLHttpRequest 用于异步模式,那么 0,1,2 状态的 onreadystatechange 回调是仅在 UI 线程中调用还是在后台线程中调用?

这种行为是否可能在不同的浏览器中有所不同?

最好的问候, 凯沙夫

【问题讨论】:

    标签: ajax xmlhttprequest onreadystatechange


    【解决方案1】:

    除非您专门使用后台工作程序(它们是浏览器扩展,尚未普遍实现;即您知道自己是否在使用它们),否则一切都将始终在同一个线程中运行。这就是 JavaScript 的工作原理。

    当然,有些实现可能会通过在单独的线程中运行 JS 来优化事情,但这对你来说总是不可见的。

    【讨论】:

    • 你的意思是即使我在异步模式下使用 xmlhttprequest 浏览器也不使用回调的本机线程支持?
    • @keshav.veerapaneni:浏览器对浏览器做了什么。从您(用户)的角度来看,一切都在一个线程中运行。
    • 感谢您的快速响应,因此这意味着如果浏览器使用单线程执行这些操作,那么在就绪状态 4 下运行长时间运行的后台操作将导致浏览器挂起此类浏览器实现
    • @keshav:是的,它会挂起。如果您想查看单线程,请尝试在单击事件处理程序中运行无限循环并观察您的页面冻结。
    猜你喜欢
    • 2012-12-27
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多