宏任务(macro-task):整体代码script、setTimeOut、setInterval
微任务(mincro-task):promise.then、promise.nextTick(node)
js异步有一个机制,就是遇到宏任务,先执行宏任务,将宏任务放入eventqueue, 然后在执行微任务,将微任务放入eventqueue最骚的是,这两个queue不是一个queue。 当你往外拿的时候先从微任务里拿这个回掉函数,然后再从宏任务的queue上拿宏任务的回掉函数。
<script>
setTimeout(function() { //异步
console.log('1') //宏任务
});
// promise可以支持多个并发的请求,获取并发请求中的数据
new Promise(function(aa) { //利用promise可以将异步操作以同步操作的流程表达出来 但本身不能说promise是异步的
console.log('2'); //同步任务 (promise类似老板)
aa();
}).then(function() { //微任务 先执行了同步里的微任务 then是Promise原型中的方法
// then的回调函数结果由promise执行结果决定的。//(等到老板通知后你才能处理业务)
//因为 then方法是微观任务Promise对象的回调函数,先于 setTimeout 执行
console.log('3')
});
console.log('4'); //同步任务
</script>