What is the log order of the code above?
Question description
async function async1() {console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {console.log('async2');
}
console.log('script start');
setTimeout(function () {console.log('setTimeout');
}, 0);
async1();
new Promise(function (resolve) {console.log('promise1');
resolve();}).then(function () {console.log('promise2');
});
console.log('script end');
This problem tests JavaScript event loop behavior, especially the order of synchronous code, microtasks from Promises and async/await, and macrotasks from setTimeout. The key is to trace which logs happen immediately, which are deferred to the microtask queue after await/then, and which run later in the timer phase.