JavaScript的异步实现机制
PHP中文网
PHP中文网 2017-04-10 14:48:36
0
2
701

大家用言简意赅的语言,讲讲JavaScript的异步实现机制。
参考帮助:http://www.cnblogs.com/sprying/archive/2013/05/26/3100639.html

PHP中文网
PHP中文网

认证0级讲师

reply all(2)
小葫芦

js能异步是因为它用能调用的模块是异步的。

js永远都是单线程的。(当然,如果你非要说work),而且只有一个事件队列(你也可以理解成任务队列)
他之所以异步是是因为 某些的模块是异步的。
举个栗子,ajax
当你发送一个异步网络请求后,js的主线程不会一直等待这个请求返回,而是执行事件队列里下一个事件。
请注意,js并没有实现如何发送网络请求,js只是调用了某个能发送网络请求的模块,而这个模块是通过c++或其他语言实现。然后这个模块在等待请求的结果,当得到响应后,便把响应成功这个事件添加到js的事件队列的队尾。
你看,网络请求发送的同时,js依然在执行,这显然是异步的。

洪涛

这篇文章的重点就是这一句了:

我们必须清楚一点,触发和执行并不是同一概念,计时器的回调函数一定会在指定delay的时间后被触发,但并不一定立即执行,可能需要等待。所有JavaScript代码是在一个线程里执行的,像鼠标点击和计时器之类的事件只有在JS单线程空闲时才执行。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template