js 单线程 回调

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

    原文作者:EMMA
    原文地址: https://segmentfault.com/a/1190000004334133
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞