宏任务:setTImeout、setInterval
微任务:Promise、process.nextTick(callback)
同一个队列中,先执行宏任务,再执行其他任务,最后执行微任务
在当前队列中出现的异步,如果是微任务就会放在当前队列的最低端
如果当前队列中出现的异步宏任务,就会放在下一队列的最顶端
也就是说 同一个队列中触发异步,微任务先执行,宏任务后执行
<script>
setTimeout(function () {
new Promise(function (res, rej) {
console.log("1");
res();
}).then(
function () {
console.log("2");
},
function () {}
);
console.log("3");
}, 0);
console.log("4");
</script>
依次输出:4 1 3 2
console.log('script start');
setTimeout(function () {
console.log('setTimeout---0');
}, 0);
setTimeout(function () {
console.log('setTimeout---200');
setTimeout(function () {
console.log('inner-setTimeout---0');
});
Promise.resolve().then(function () {
console.log('promise5');
});
}, 200);
Promise.resolve().then(function () {
console.log('promise1');
}).then(function () {
console.log('promise2');
});
Promise.resolve().then(function () {
console.log('promise3');
});
console.log('script end');
script start
script end
promise1
promise3
promise2
setTimeout---0
setTimeout---200
promise5
inner-setTimeout---0
网友评论