当javascript是单线程时,谁是onreadystatechange的调用者

Who is the caller of onreadystatechange when javascript is single-threaded?

本文关键字:谁是 onreadystatechange 调用者 javascript 单线程      更新时间:2024-04-25

好吧,我是javascript的新手,听说它是单线程的。在我看来,如果您发出异步请求,它应该启动一个自己的线程来控制服务器是否已经响应。这在Javascript中不起作用。我在想,是否有一些内置的机制可以保存所有侦听器并调用它们,这取决于它们"同意"的条件(onreadystatechange)。

这只是一个假设,我想我完全错了。也许有人能帮我?

只有javascript执行本身是单线程的,如下所述。然而,底层引擎可能会使用更多的线程。

因此,HTTP请求(在浏览器内部深处创建)可能有自己的线程,但当发生某种事情(如响应)时,它会触发一个事件,将其排入JS任务调度程序。一旦当前脚本执行结束,就会调用onreadystatechange函数。

正如您所知,XHR对象对于所有浏览器都是不同的。例如,IE使用ActiveX,FF使用XMLHttpRequest对象。。。有一些努力通过引入XHR2对象来在HTML5中统一这一点,但它仍然没有得到广泛支持。因此,对于每个浏览器,这将以不同的方式实现。有些可能使用线程,另一些则使用其他线程。这不是纯粹的javascript。当人们说javascript是单线程的时,他们的意思是你不能用javascript手动创建线程。但这并不意味着你不能进行异步编程。