const asyncFunction = function() {
return new Promise(function(resolve, reject) {
resolve('promise');
});
};
asyncFunction().then(value => console.log(value));
setTimeout(() => { console.log('settimeout') }, 0);
输出
// promise
// settimeout
请问两个都是异步的函数,为什么setTimeout
函数后执行?
Promise 是microtask 队列
而setTimeout属于 macrotask 队列
在一个Tasks执行之后会立刻执行microtask队列,而后执行macrotask队列
macrotask永远在 microtask 之后执行