我们都知道js事件分为同步事件和异步事件。 因为js是单线程的,所以同步事件将被直接放入函数堆栈,而异步事件将被放入其他模块处理。

下面将用典型的例子来解析js执行时的事件循环机制。
1.
console.log('hi');
setTimeout(function cb(){
console.log('cb')
},5000);
console.log('js')
2.
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(new Date, i);
}, 1000);
}
console.log(new Date, i);
3.
(function test() {
setTimeout(function() {console.log(4)}, 0);
new Promise(function executor(resolve) {
console.log(1);
for( var i=0 ; i<10000 ; i++ ) {
i == 9999 && resolve();
}
console.log(2);
}).then(function() {
console.log(5);
});
console.log(3);
})()