{"@context":"https://ihatereading.in/roadmap/schema/v1","type":"roadmap-chapter","roadmap":{"slug":"javascript-development","title":"JavaScript Developer Roadmap","url":"https://ihatereading.in/roadmap/javascript-development","machineUrl":"https://ihatereading.in/roadmap/javascript-development.json"},"slug":"async-and-event-loop","title":"Async JavaScript & the Event Loop","url":"https://ihatereading.in/roadmap/javascript-development/async-and-event-loop","machineUrl":"https://ihatereading.in/roadmap/javascript-development/async-and-event-loop.json","summary":{"purpose":"Schedule async work with Promises, async/await, and the event loop — without guessing execution order.","prerequisites":["Functions & closures"],"afterThisChapter":["Objects, Arrays & JSON","Ecosystem & frameworks"]},"agentLens":null,"topics":[{"id":"event-loop","slug":"event-loop","title":"Event loop & task queues","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Call stack","Microtasks vs macrotasks","Order of `setTimeout` vs `Promise.then`"],"why":["Explains mysterious log order and UI jank in heavy apps."],"prerequisites":[],"nextTopics":["promises-async-await"],"relatedTopics":[],"usedIn":[],"understand":{"summary":"JavaScript runs one call stack; the host queues callbacks and drains microtasks before the next macrotask.","example":null,"mentalModel":"One chef (stack), many order tickets (queues) — microtasks get served between macrotasks.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What runs first: a microtask or a `setTimeout(0)` callback?"],"practice":[],"interview":["Explain the event loop in 60 seconds."],"advanced":[],"debugging":["Why did my `console.log` order not match source order?"],"comparison":[]},"projects":null,"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":[],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/event-loop"]},"agentLens":null,"skipIf":null,"build":null,"next":["promises-async-await"],"prerequisite":[]},{"id":"promises-async-await","slug":"promises-async-await","title":"Promises & async/await","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Promise states","async/await syntax","Error handling with try/catch"],"why":["Default pattern for fetch, Node I/O, and modern APIs."],"prerequisites":["event-loop"],"nextTopics":["ecosystem-and-frameworks"],"relatedTopics":[],"usedIn":[],"understand":null,"questions":{"learning":[],"practice":["Chain two fetches; handle non-OK HTTP explicitly."],"interview":[],"advanced":[],"debugging":[],"comparison":["Promise chains vs async/await — readability and error handling."]},"projects":{"beginner":"Fetch JSON from a public API and render loading/error/success states.","intermediate":"Async data dashboard aggregating three endpoints with `Promise.all`.","advanced":null},"commonMistakes":[],"bestPractices":[],"debug":{"mistakes":[],"errors":["Unhandled promise rejection — always attach `.catch` or try/catch around await."],"scenarios":[]},"compare":["Promise vs async/await — same underlying model; async/await is syntax sugar.","Callbacks vs Promises — when is callback style still valid?"],"resources":{"official":[],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":[]},"agentLens":null,"skipIf":null,"build":null,"next":["ecosystem-and-frameworks"],"prerequisite":["event-loop"]}],"updatedAt":"2026-10-23T03:02:31.103Z"}