Question: What does the following code print?
console.log('one');
setTimeout(function() {
console.log('two');
}, 0);
Promise.resolve().then(function() {
console.log('three');
})
console.log('four');
当然最开始顺序执行主线程程序,会log出one、four。这里又涉及到异步的宏任务和微任务,setTimeout加入macrotask队列,是宏任务,Promise加入microtask队列,整体是微任务,主线程执行完了之后先从微任务栈里面获取微任务执行,没有微任务了,就去宏任务栈里面获取宏任务执行,所以在一个循环内,微任务是比宏任务先执行的
网上也找到一个很多JS执行顺序例子的网址:https://www.jianshu.com/p/e585e737fb6f