宏任务 :setTimeout、setInterval
微任务 :promise nixtTick
EvenT Loop JS得事件循环机制
js得执行模式有点像排队得模式,执行完一个执行下一个,这时候有一些任务需要很长时间才能完成,这时候就有了一个异步队列,将这些任务放到异步队列中,当主线程执行完毕以后,再执行异步队列中得任务列表。
异步队列 分为微任务 和 宏任务,先执行所有得微任务,完毕之后再执行宏任务,
这里看看代码得一个执行先后顺序
注意下:new Promise得方法和.then()中得代码是立即执行得,在主程序上,.then()中得方法是微任务,setTimeout是宏任务,优先执行.then中得回调方法,再执行setTimeout
console.log("打印" + 1);
setTimeout(function () {
console.log("打印" + 2);
});
new Promise(function (resolve, reject) {
console.log("打印" + 8);
resolve(1);
}).then((res) => {
console.log("打印" + 9);
});
new Promise(function (resolve, reject) {
console.log("打印" + 3);
}).then(console.log("打印" + 4));
console.log("打印" + 10);
new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("打印" + 5);
});
}).then(console.log("打印" + 6));
setTimeout(function () {
new Promise(function (resolve, reject) {
console.log("打印" + 7);
});
});
执行顺序 1,8,3,4,10,6,9,2,5,7