javascript执行原理分析:
javascript都是单线程操作。用于操作DOM,出现的异步(永远不存在同时处理DOM,但是可能同时处理事件)是一种增加体验的设计。
它的执行原则:
-
所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
-
主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
-
一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
循环执行上面三步。
需要注意的是定时事件:每个事件都是在主线程执行事件执行完成,才开始读取定时任务(如果这个定时任务时间已到,才执行。如果定时时间没到,那么就去读回调函数队列)