执行循序 setTimout和promise
这里我们先要理解js是是单线程执行的。在内存中函数的执行是分同步和异步的。
同步任务会放在主线程中一一执行,而异步任务会先注册到事件队列里。等待主线程任务执行完毕,才会去异步队列里拿出任务放在主线程中去执行。
这里还有俩个概念要去理解,宏事件微事件。
宏事件: script, setTimeout,setInterval
微事件:promise
这里还要多说一句promise是立即执行的函数
setTimeout(function() { console.log(1) }, 0);
new Promise(function(a, b) {
console.log(2);
for(var i = 0; i < 10; i++) {
i == 9 && a();
}
console.log(3);
}).then(function() {
console.log(4)
});
console.log(5)
//输出:2,3,5,4,1
先执行宏事件,再执行微事件,然后再执行宏事件,再执行微事件,如此循环下去..