运行机制event-loop(事件轮询)

javascript为什么是单线程

为了避免复杂性(如:时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?)
html5允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,并没有改变JavaScript单线程的本质。

任务队列(task queue)

同步(synchronous)

主线程上排队的任务,b任务如果排在a任务后面,只能乖乖等a完成后再执行b任务。

异步(asynchronous)

a是一个异步调用api方法,
主线程执行到它时,它先发一个请求给服务器,a的回调直接被放到任务队列中,主线程继续往下执行,直到主线程的同步任务全部完成,再从任务队列中调出异步任务

var req = new XMLHttpRequest();
req.open('GET', url);    
req.onload = function (){};    
req.onerror = function (){};    
req.send();

参考来源 JavaScript 运行机制详解:再谈Event Loop

你可能感兴趣的:(运行机制event-loop(事件轮询))