图画的有点丑,但是大概是这个意思,从主线程那里顺时针的看。
注意:
整个的流程是循环往复的。
注意:
只有主线程的同步代码都执行完了,才会去队列里看看还有啥要执行的没
小区别
在异步线程类别D那里,还有一些小区别:
主线程把setTimeout、ajax、dom.onclick分别给三个线程,他们之间有些不同
1、对于setTimeout代码,定时器触发线程在接收到代码时就开始计时,时间到了将回调函数扔进队列。
2、对于ajax代码,http 异步线程立即发起http请求,请求成功后将回调函数扔进队列。
3、对于dom.onclick,浏览器事件线程会先监听dom,直到dom被点击了,才将回调函数扔进队列。
总体实例
var a = 111;
setTimeout(function() {
console.log(222)
}, 2000)
fetch(url) // 假设该http请求花了3秒钟
.then(function() {
console.log(333)
})
dom.onclick = function() { // 假设用户在4秒钟时点击了dom
console.log(444)
}
console.log(555)
// 结果
555
222
333
444
步骤1: