{"id":8019,"date":"2024-01-25T16:17:25","date_gmt":"2024-01-25T10:47:25","guid":{"rendered":"https:\/\/innovationm.co\/?p=8019"},"modified":"2024-01-25T16:17:25","modified_gmt":"2024-01-25T10:47:25","slug":"event-loop-in-javascript","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/","title":{"rendered":"Event Loop in Javascript"},"content":{"rendered":"<p style=\"text-align: justify;\"><strong>Introduction<\/strong><span style=\"text-decoration: underline;\"><strong><br \/>\n<\/strong><\/span><br \/>\nThe event loop is a mechanism that is an integral part of the browser environment and runs continuously, whether the code is synchronous or asynchronous. The primary function of the event loop is to manage the execution of JavaScript code, placing callbacks in a queue and pushing them onto the call stack when they become available.<\/p>\n<p><strong>Why we need event loop ?<\/strong><span style=\"text-decoration: underline;\"><strong><br \/>\n<\/strong><\/span><br \/>\nAs we know, JavaScript is a single-threaded language, and everything that needs to be executed in JavaScript happens in the call stack. This means that whenever JavaScript code is executed, it is executed line by line, being pushed onto the call stack.<\/p>\n<p>The call stack has a singular purpose \u2014 to execute the code that comes for execution, one after the other. It operates on a Last In, First Out (LIFO) basis, meaning the last function that gets pushed onto the stack is the first to be executed, So, the call stack&#8217;s role is essentially to manage the execution of code by pushing functions onto the stack and popping them off once they are executed. It ensures that the execution of JavaScript code occurs in a predictable and orderly manner.<\/p>\n<p style=\"text-align: justify;\">But when we need to execute a piece of code at a specific interval (i.e. Asynchronous Task), we face a challenge because we want to send that code to the call stack after a particular time interval as the call stack immediately executes whatever is pushed onto it. So, the question arises of where to place that code for that specific time interval before pushing it onto the call stack.<\/p>\n<p style=\"text-align: justify;\">The browser provides a solution to this problem through the concept of Web APIs.WEB APIs contain operations like setTimeout(), DOM APIs, fetch(), Local Storage, and console, among others. It&#8217;s important to note that these WEB APIs are part of the browser, not the JS Engine. When you make a call to functions like setTimeout(), the browser takes over and initiates a timer.<\/p>\n<p>With setTimeout(), we can at least store the code somewhere else for a particular time interval without sending it to the call stack immediately. However, a new problem arises \u2014 how do we push that code onto the call stack after the specified time interval? The challenge here is that in a single-threaded language like JavaScript, only one thread can execute on the call stack at a time. So, even after a particular time interval, we cannot push the code onto the call stack until it is free.<\/p>\n<p>To solve this problem queues(Task(callback) queue and Microtask queue) come in to the play. So after that particular interval of time , the code is placed in the queues based on the type of asynchronous task. All the callback functions or the blocks of code which comes through promises are placed in the microtask queue and the callback functions or the blocks of code which are inside the operations like setTimeout() are placed in callback queue.<\/p>\n<p><strong>How event loop works?<br \/>\n<\/strong><br \/>\nThe event loop acts as an intermediary between the call stack and these two queues, constantly monitoring them. Whenever the call stack becomes empty, the event loop checks these queues and pushes the code onto the call stack.<\/p>\n<p style=\"text-align: justify;\">However, if the call stack is free and If there is more than one piece of code available in the same queue then the code is pushed on first-come-first-serve basis. But if there is code in both the task (callback) queue and the micro task queue, the micro task queue takes priority. This means that the block of code present in the micro task queue will be pushed onto the call stack before the block of code present in the task (callback) queue. The event loop ensures this prioritization and orderly execution of code, managing the flow of asynchronous operations in JavaScript. Hence we can say that the event loop is a mechanism that ensures that the code executes smoothly and efficiently, without blocking the main thread. Without the event loop, providing a seamless user experience in web applications would be challenging.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-medium wp-image-8021\" src=\"https:\/\/innovationm.co\/wp-content\/uploads\/2024\/01\/event-loop-300x300.jpg\" alt=\"event loop\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-300x300.jpg 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-1024x1024.jpg 1024w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-150x150.jpg 150w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-768x768.jpg 768w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-624x624.jpg 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-24x24.jpg 24w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-48x48.jpg 48w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop-96x96.jpg 96w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/event-loop.jpg 1080w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">Event loop acts as an intermediary between the call stack and callback queues,\u00a0 ensuring that asynchronous operations are executed without blocking the main\u00a0 thread. The event loop&#8217;s nuanced handling of the Micro Task Queue prioritizes\u00a0 certain tasks, contributing to the efficiency and responsiveness of JavaScript\u00a0 applications. Understanding the event loop is fundamental for developers navigating\u00a0 the intricacies of asynchronous programming in JavaScript.\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The event loop is a mechanism that is an integral part of the browser environment and runs continuously, whether the code is synchronous or asynchronous. The primary function of the event loop is to manage the execution of JavaScript code, placing callbacks in a queue and pushing them onto the call stack when they [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8020,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[360,585,8,7,947,102,258],"tags":[346,926],"class_list":["post-8019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-mobile-app-development","category-mobile-architecture-and-design","category-mobile-testing","category-web-development","category-web-service","category-web-technology","tag-javascript","tag-javascript-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Event Loop in Javascript - InnovationM - Blog<\/title>\n<meta name=\"description\" content=\"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Event Loop in Javascript - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-25T10:47:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2240\" \/>\n\t<meta property=\"og:image:height\" content=\"1260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Event Loop in Javascript\",\"datePublished\":\"2024-01-25T10:47:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/\"},\"wordCount\":743,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Blog-Banner-1-1.png\",\"keywords\":[\"JavaScript\",\"javascript blog\"],\"articleSection\":[\"JavaScript\",\"Mobile App Development\",\"Mobile Architecture and Design\",\"Mobile Testing\",\"Web development\",\"Web service\",\"Web Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/\",\"name\":\"Event Loop in Javascript - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Blog-Banner-1-1.png\",\"datePublished\":\"2024-01-25T10:47:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"description\":\"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Blog-Banner-1-1.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Blog-Banner-1-1.png\",\"width\":2240,\"height\":1260,\"caption\":\"EVENT LOOP IN JAVASCRIPT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/event-loop-in-javascript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Event Loop in Javascript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Event Loop in Javascript - InnovationM - Blog","description":"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Event Loop in Javascript - InnovationM - Blog","og_description":"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.","og_url":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/","og_site_name":"InnovationM - Blog","article_published_time":"2024-01-25T10:47:25+00:00","og_image":[{"width":2240,"height":1260,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Event Loop in Javascript","datePublished":"2024-01-25T10:47:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/"},"wordCount":743,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png","keywords":["JavaScript","javascript blog"],"articleSection":["JavaScript","Mobile App Development","Mobile Architecture and Design","Mobile Testing","Web development","Web service","Web Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/","url":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/","name":"Event Loop in Javascript - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png","datePublished":"2024-01-25T10:47:25+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"description":"Explore the intricacies of the event loop in JavaScript with our comprehensive guide. Understand how events are processed, learn best practices, and optimize your code for seamless performance. Master the key concepts of JavaScript event handling for a smoother, more efficient web development experience. Dive into our blog now for expert insights on the JavaScript event loop.","breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2024\/01\/Blog-Banner-1-1.png","width":2240,"height":1260,"caption":"EVENT LOOP IN JAVASCRIPT"},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/event-loop-in-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Event Loop in Javascript"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/8019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=8019"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/8019\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/8020"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=8019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=8019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=8019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}