Ajax XMLHttpRequest的Onreadystatechange回调行为

Ajax XMLHttpRequest的Onreadystatechange回调行为,ajax,xmlhttprequest,onreadystatechange,Ajax,Xmlhttprequest,Onreadystatechange,如果XMLHttpRequest与异步模式一起使用,那么0,1,2状态的onreadystatechange回调是仅在UI线程中调用还是在后台线程中调用 在不同的浏览器中,这种行为是否可能有所不同 致以最良好的祝愿, Keshav除非您专门使用后台工作程序(这是浏览器扩展,尚未普遍实现;即,您知道是否使用了它们),否则所有内容都将始终在同一线程中运行。这就是JavaScript的工作原理 当然,有些实现可能会通过在单独的线程中运行JS来优化事情,但这对您来说始终是不可见的。您的意思是,即使我在异

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

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

致以最良好的祝愿,
Keshav

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


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

您的意思是,即使我在异步模式下使用xmlhttprequest,浏览器也不会对回调使用本机线程支持吗?@keshav.veerapaneni:浏览器的功能取决于浏览器。从您(用户)的角度来看,所有操作都在单个线程中运行。感谢您的快速响应,因此这意味着如果浏览器使用单个线程执行这些操作,则在就绪状态4下运行长时间运行的后台操作将挂起该浏览器的浏览器implementations@keshav:是的,它会挂起来。如果希望看到单线程,请尝试在click事件处理程序中运行无限循环,并观察页面冻结。