
π JavaScript Async/Await vs `.then()` : The Microtask & Event Loop Secret
Ever seen this and wondered why the output changes just by reordering lines? async function hi () { return " there " ; } // Version A const waitedhi = await hi (); console . log ( waitedhi ); hi (). then ( res => console . log ( res )); console . log ( " end " ); vs // Version B hi (). then ( res => console . log ( res )); const waitedhi = await hi (); console . log ( waitedhi ); console . log ( " end " ); π Same codeβ¦ different output. Why? π§ The Hidden Mechanism: Microtasks Both await and .then() use Promises , and both schedule work in the microtask queue . π Key rule: Microtasks run in the order they are added (FIFO) β‘ What await really does await hi (); is roughly: hi (). then ( result => { // rest of your code }); So: .then() β schedules a microtask await β schedules a microtask (continuation) π₯ Why order matters Version A await schedules continuation resumes β logs "there" .then() schedules another microtask "end" logs .then() runs β Output: there end there Version B .then() β m
Continue reading on Dev.to Webdev
Opens in a new tab




