javascript多线程详解
造成这些困难的主要原因是什么这是与服务器的异步通信问题吗还是GUI编程的问题通常这两项工作是通过桌面程序完成的,为什么开发一个可以实现相同功能的Ajax应用程序如此困难呢
我们都知道,Javascript是单线程的执行,但它可以通过setTimeout和setInterval方法定期执行。Ajax可以向服务器端发送请求,而不接收响应,它可以继续执行主逻辑。
首先来看一下代码的下面部分:
printhello()函数
{
console.time(你好);
}
printhello1()函数
{
Console.timeEnd(你好);
}
setTimeout(printhello,1000);
setTimeout(printhello15000);
函数等待(时间)
{
VAR现在= Date.now();
而(Date.now()-现在<<时间)
{
}
}
等待(5000);
上述代码必须作为结果执行。
你好:0.124ms
你可以从代码中看到的,printhello和printhello1都几乎在同一时间执行。如果一个多线程模型,执行间隔4000ms。
上述原因是setTimeout只是按事件队列中的时间点,而不是立即执行。当执行,它的程度取决于浏览器空闲。
事实上,虽然Javascript是一个线程,但是浏览器是多线程的,典型的浏览器有以下线程:
Javascript引擎线程
界面渲染线程
浏览器事件触发线程
HTTP请求的线程
Javascript是单线程的Javascript引擎线程的单线程处理事件队列,而浏览器是事件驱动的,许多事件都是异步的,如鼠标单击事件,setTimeout,Ajax回调事件,当事件发生时,浏览器将这些事件的执行队列,然后执行浏览器空闲。
此外,值得一提的是Ajax调用是异步的。浏览器将启动一个新线程,将请求发送到服务器。如果回调成立,回调事件将被放置在事件队列根据服务状态。
以上是我对Javascript多线程的理解,以及个人理解能力有限。我们也希望你能做出宝贵的评论和研究,我希望以上的介绍能对你有所帮助。