TikTok / VO Interview Question: JavaScript Async Log Order

12 Views
No Comments

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.

END
 0