{"id":72662,"date":"2020-01-14T16:36:18","date_gmt":"2020-01-14T11:06:18","guid":{"rendered":"https:\/\/www.vskills.in\/certification\/tutorial\/?p=72662"},"modified":"2024-04-12T14:22:58","modified_gmt":"2024-04-12T08:52:58","slug":"cycles","status":"publish","type":"page","link":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/","title":{"rendered":"Cycles"},"content":{"rendered":"<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">When there are circular require() calls, a module might not have finished executing when it is returned. Consider this situation:<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">a.js:<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;a starting&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">exports.done = false;<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">const b = require(&#8216;.\/b.js&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;in a, b.done = %j&#8217;, b.done);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">exports.done = true;<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;a done&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">b.js:<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;b starting&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">exports.done = false;<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">const a = require(&#8216;.\/a.js&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;in b, a.done = %j&#8217;, a.done);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">exports.done = true;<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;b done&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">main.js:<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;main starting&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">const a = require(&#8216;.\/a.js&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">const b = require(&#8216;.\/b.js&#8217;);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">console.log(&#8216;in main, a.done = %j, b.done = %j&#8217;, a.done, b.done);<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">When main.js loads a.js, then a.js in turn loads b.js. At that point, b.js tries to load a.js. In order to prevent an infinite loop, an unfinished copy of the a.js exports object is returned to the b.js module. b.js then finishes loading, and its exports object is provided to the a.js module.<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">By the time main.js has loaded both modules, they&#8217;re both finished. The output of this program would thus be:<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">$ node main.js<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">main starting<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">a starting<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">b starting<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">in b, a.done = false<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">b done<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">in a, b.done = true<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">a done<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">in main, a.done = true, b.done = true<\/span><\/p>\n<p class=\"VSKILLbodytext\"><span lang=\"EN-US\">\u00a0<\/span><span lang=\"EN-US\">Careful planning is required to allow cyclic module dependencies to work correctly within an application.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When there are circular require() calls, a module might not have finished executing when it is returned. Consider this situation: \u00a0a.js: console.log(&#8216;a starting&#8217;); exports.done = false; const b = require(&#8216;.\/b.js&#8217;); console.log(&#8216;in a, b.done = %j&#8217;, b.done); exports.done = true; console.log(&#8216;a done&#8217;); \u00a0b.js: console.log(&#8216;b starting&#8217;); exports.done = false; const a = require(&#8216;.\/a.js&#8217;); console.log(&#8216;in b, a.done =&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[8453],"tags":[8478],"class_list":["post-72662","page","type-page","status-publish","hentry","category-node-js","tag-cycles"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cycles - Tutorial<\/title>\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.vskills.in\/certification\/tutorial\/cycles\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cycles - Tutorial\" \/>\n<meta property=\"og:description\" content=\"When there are circular require() calls, a module might not have finished executing when it is returned. Consider this situation: \u00a0a.js: console.log(&#8216;a starting&#8217;); exports.done = false; const b = require(&#8216;.\/b.js&#8217;); console.log(&#8216;in a, b.done = %j&#8217;, b.done); exports.done = true; console.log(&#8216;a done&#8217;); \u00a0b.js: console.log(&#8216;b starting&#8217;); exports.done = false; const a = require(&#8216;.\/a.js&#8217;); console.log(&#8216;in b, a.done =...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutorial\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/vskills.in\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-12T08:52:58+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/\",\"name\":\"Cycles - Tutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\"},\"datePublished\":\"2020-01-14T11:06:18+00:00\",\"dateModified\":\"2024-04-12T08:52:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cycles\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"name\":\"Tutorial\",\"description\":\"Vskills - A initiative in elearning and certification\",\"publisher\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\",\"name\":\"Vskills\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"contentUrl\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"width\":73,\"height\":55,\"caption\":\"Vskills\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/vskills.in\/\",\"https:\/\/x.com\/vskills_in\",\"https:\/\/www.linkedin.com\/company-beta\/1371554\/\",\"https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cycles - Tutorial","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.vskills.in\/certification\/tutorial\/cycles\/","og_locale":"en_US","og_type":"article","og_title":"Cycles - Tutorial","og_description":"When there are circular require() calls, a module might not have finished executing when it is returned. Consider this situation: \u00a0a.js: console.log(&#8216;a starting&#8217;); exports.done = false; const b = require(&#8216;.\/b.js&#8217;); console.log(&#8216;in a, b.done = %j&#8217;, b.done); exports.done = true; console.log(&#8216;a done&#8217;); \u00a0b.js: console.log(&#8216;b starting&#8217;); exports.done = false; const a = require(&#8216;.\/a.js&#8217;); console.log(&#8216;in b, a.done =...","og_url":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/","og_site_name":"Tutorial","article_publisher":"https:\/\/www.facebook.com\/vskills.in\/","article_modified_time":"2024-04-12T08:52:58+00:00","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/","name":"Cycles - Tutorial","isPartOf":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website"},"datePublished":"2020-01-14T11:06:18+00:00","dateModified":"2024-04-12T08:52:58+00:00","breadcrumb":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/cycles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vskills.in\/certification\/tutorial\/"},{"@type":"ListItem","position":2,"name":"Cycles"}]},{"@type":"WebSite","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","name":"Tutorial","description":"Vskills - A initiative in elearning and certification","publisher":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization","name":"Vskills","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","contentUrl":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","width":73,"height":55,"caption":"Vskills"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/vskills.in\/","https:\/\/x.com\/vskills_in","https:\/\/www.linkedin.com\/company-beta\/1371554\/","https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw"]}]}},"_links":{"self":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/72662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/comments?post=72662"}],"version-history":[{"count":3,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/72662\/revisions"}],"predecessor-version":[{"id":73174,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/72662\/revisions\/73174"}],"wp:attachment":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/media?parent=72662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/categories?post=72662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/tags?post=72662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}