资讯专栏INFORMATION COLUMN

js 单线程 回调

enrecul101 / 724人阅读

摘要:定时器机制更正之前的错误认识函数内调用,函数结束。在规定的时间之后,依然会触发的回调。首先要确认几点单线程浏览器多线程单线程原因如果多线程,那么删除或者创建元素,都需要在线程之间通信。因为浏览器不确定是状态。所以,设计之初就是单线程。

js定时器机制

更正之前的错误认识:
1.函数内调用settimeout,函数结束。在规定的时间之后,依然会触发settimeout的回调。

首先要确认js几点:
1.js单线程 vs 浏览器多线程:

单线程原因:如果多线程,那么删除或者创建dom元素,都需要在线程之间通信。因为浏览器不确定是dom状态。所以,js设计之初就是单线程。

好处:简单,没有线程切换维护开销,省内存

2.浏览器是多线程:

javascript引擎线程

界面渲染线程

浏览器事件触发线程

Http请求线程

但是浏览器内核是多线程!浏览器内核实现允许多个线程异步执行,这些线程在内核制控下相互配合以保持同步.假如某一浏览器内核的实现至少有三个常驻线程:javascript引擎线程,界面渲染线程,浏览器事件触发线程,除些以外,也有一些执行完就终止的线程,如Http请求线程,这些异步线程都会产生不同的异步事件,下面通过一个图来阐明单线程的JavaScript引擎与另外那些线程是怎样互动通信的.虽然每个浏览器内核实现细节不同,但这其中的调用原理都是大同小异.

定时器难点:
1.定时器实际延时时间,是无法预知的
理解js异步回调和它的单线程是如何配合工作的:

 为什么settimeout会触发回调  ajax回调 click回调

参考资料:http://www.laruence.com/2009/09/23/1089.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91616.html

相关文章

  • JS 异步的实现

    摘要:由于引擎同一时间只执行一段代码这是由单线程的性质决定的,所以每个代码块阻塞了其它异步事件的进行。这意味着浏览器将等待着一个新的异步事件发生。异步的任务执行的顺序是不固定的,主要看返回的速度。 我们经常说JS是单线程的,比如node.js研讨会上大家都说JS的特色之一是单线程的,这样使JS更简单明了,可是大家真的理解所谓JS的单线程机制吗?单线程时,基于事件的异步机制又该当如何,这些知识...

    sihai 评论0 收藏0
  • 异步

    摘要:在异步机制中,任务队列就是用来维护异步任务回调函数的队列。四对象对象是工作组提出的一种规范,目的是为异步编程提供统一接口。 异步 1.JavaScript单线程的理解 Javascript语言的执行环境是单线程(single thread)。所谓单线程,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 2.JavaScript单线...

    goji 评论0 收藏0
  • 【11】JavaScript 线程机制与事件机制

    摘要:线程机制与事件机制一进程与线程进程程序的一次执行,它占有一片独有的内存空间。事件响应模块负责事件的管理。当事件发生时管理模块会将回调函数及其数据添加到回调列队中。但是子线程完全受主线程控制,且不得操作。向另一个线程发送消息。 JavaScript线程机制与事件机制 一、进程与线程 进程(process) 程序的一次执行,它占有一片独有的内存空间。 可以通过windows任务管理器查...

    fobnn 评论0 收藏0
  • js线程,异步及回调函数

    摘要:当主线程开始执行异步任务,实际就是执行对应的回调函数。异步任务必须指定回调函数。所以注意的是,只是将事件插入了任务队列,必须等到当前代码执行栈执行完,主线程才会去执行它指定的回调函数。 最近本人对于js的运行机制,特别是异步,还有回调函数感觉很乱,于是参考了很多有用的博客(博客原文地址会在文末给出),整理如下: js单线程 我们都知道,Javascript语言的执行环境是单线程(si...

    Songlcy 评论0 收藏0
  • JS核心知识点梳理——异步,线程,运行机制

    摘要:引言学习的时候,经常听人说,即是异步的,又是单线程的。所以我们说是异步单线程的。参考从浏览器多进程到单线程,运行机制最全面的一次梳理运行机制详解再谈异步机制详解运行原理解析并发模型与事件循环 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 学习javascipt的时候,经常听人说,javascipt即是异步...

    TANKING 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<