搜索

首页  >  问答  >  正文

JavaScript的异步实现机制

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

PHP中文网PHP中文网2793 天前710

全部回复(2)我来回复

  • 高洛峰

    高洛峰2017-04-10 14:50:36

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

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 14:50:36

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

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

    回复
    0
  • 取消回复