{"id":1249,"date":"2020-08-15T13:55:01","date_gmt":"2020-08-15T04:55:01","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1249"},"modified":"2020-08-15T17:53:48","modified_gmt":"2020-08-15T08:53:48","slug":"nodejs-%eb%b9%84%eb%8f%99%ea%b8%b0-%ec%b2%98%eb%a6%ac%ec%99%80-closure","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1249","title":{"rendered":"NodeJS \ube44\ub3d9\uae30 \ucc98\ub9ac"},"content":{"rendered":"<h1>NodeJS \ube44\ub3d9\uae30 \ucc98\ub9ac<\/h1>\n<h2>NodeJS \ube44\ub3d9\uae30 \ucc98\ub9ac \ubb38\uc81c<\/h2>\n<p>NodeJS \ub294 \ube44\ub3d9\uae30\ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. \uadf8\ub7ec\ub2e4 \ubcf4\uba74 \uc758\ub3c4\uc640\ub294 \ub2e4\ub978 \uacb0\uacfc\uac00 \ub098\uc624\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">function callbackFunction(callback) {\n    setTimeout(callback, 100);\n}\n\nfor (var i = 0; i &lt; 3; i++) {\n    console.log(&#039;start for&#039;);\n    callbackFunction(function() {\n        console.log(&#039;in callback function&#039;);\n        console.log(i + 10);\n    });\n    console.log(&#039;end for&#039;);\n}<\/code><\/pre>\n<pre><code class=\"language-bash\">start for\nend for\nstart for\nend for\nstart for\nend for\nin callback function\n13\nin callback function\n13\nin callback function\n13<\/code><\/pre>\n<h2>Closure<\/h2>\n<p>Closure(\ud074\ub85c\uc800)\ub97c \uc774\uc6a9\ud558\uac8c \ub418\uba74 \uc758\ub3c4\ud55c \uacb0\uacfc\ub97c \uc5bb\uac8c\ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">function callbackFunction(callback) {\n    setTimeout(callback, 100);\n}\n\nfor (var i = 0; i &lt; 3; i++) {\n    console.log(&#039;start for&#039;);\n    (function(v) {\n        callbackFunction(function() {\n            console.log(&#039;in callback function&#039;);\n            console.log(v + 10);\n        })\n    })(i);\n    console.log(&#039;end for&#039;);\n}<\/code><\/pre>\n<pre><code class=\"language-bash\">start for\nend for\nstart for\nend for\nstart for\nend for\nin callback function\n10\nin callback function\n11\nin callback function\n12<\/code><\/pre>\n<h2>promise<\/h2>\n<p>\ub450\uac1c \uc774\uc0c1\uc758 \ud568\uc218\uc758 \uc2e4\ud589\uc774 \uc21c\uc11c\ub97c \uc9c0\ucf1c\uc57c \ud560 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c\ub4e4\uc5b4, \ub514\ube44\uc5d0\uc11c \ub370\uc774\ud0c0\ub97c \uc77d\uc5b4\uc624\uace0, \uc77d\uc5b4\uc628 \ub370\uc774\ud0c0\ub97c \ud654\uba74\uc5d0 \ubfcc\ub824\uc57c \ud560 \uacbd\uc6b0 \ub4f1\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">function asyncFunc1(param1, param2) {\n    setTimeout(function() {\n        console.log(&#039;aaa&#039;);\n    }, 1000);\n}\n\nfunction asyncFunc2(param1, param2) {\n    setTimeout(function() {\n        console.log(&#039;bbb&#039;);\n    }, 200);\n}\n\nasyncFunc1(1, 2);\nasyncFunc2(1, 2);<\/code><\/pre>\n<p>\ube44\ub3d9\uae30\ub97c \uc2e4\ud589\ub418\uac8c \ub418\uba74 \uc6d0\ud558\ub294 \uacb0\uacfc\uc640 \ub2e4\ub978 \uacb0\uacfc\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">function asyncFunc1(param1, param2) {\n    return new Promise(function(resolved, rejected) {\n        setTimeout(function() {\n            console.log(&#039;aaa&#039;);\n            return resolved(param1, param2);\n        }, 1000);\n    });\n}\n\nfunction asyncFunc2(param1, param2) {\n    return new Promise(function(resolved, rejected) {\n        setTimeout(function() {\n            console.log(&#039;bbb&#039;);\n            return resolved(param1, param2);\n        }, 200);\n    });\n}\n\nvar promise = asyncFunc1(1, 2);\npromise.then(asyncFunc2);<\/code><\/pre>\n<p><code>promise<\/code> \ub97c \uc774\uc6a9\ud558\uba74 \ube44\ub3d9\uae30 \ubc29\uc2dd\uc744 \uc720\uc9c0\ud558\uba74\uc11c, \uc2e4\ud589\uc21c\uc11c\ub97c \ubcf4\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>async\/await<\/h2>\n<p><code>async\/await<\/code> \ub97c \uc774\uc6a9\ud574 \uc880 \ub354 \uae54\ub054\ud788 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">function asyncFunc1(param1, param2) {\n    return new Promise(function(resolved, rejected) {\n        setTimeout(function() {\n            console.log(&#039;aaa&#039;);\n            return resolved(param1, param2);\n        }, 1000);\n    });\n}\n\nfunction asyncFunc2(param1, param2) {\n    return new Promise(function(resolved, rejected) {\n        setTimeout(function() {\n            console.log(&#039;bbb&#039;);\n            return resolved(param1, param2);\n        }, 200);\n    });\n}\n\nconst func = async () =&gt; {\n    await asyncFunc1(1, 2);\n    await asyncFunc2(1, 2);\n}\n\nfunc();<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>NodeJS \ube44\ub3d9\uae30 \ucc98\ub9ac NodeJS \ube44\ub3d9\uae30 \ucc98\ub9ac \ubb38\uc81c NodeJS \ub294 \ube44\ub3d9\uae30\ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. \uadf8\ub7ec\ub2e4 \ubcf4\uba74 \uc758\ub3c4\uc640\ub294 \ub2e4\ub978 \uacb0\uacfc\uac00 \ub098\uc624\uac8c \ub429\ub2c8\ub2e4. function callbackFunction(callback) { setTimeout(callback, 100); } for (var i = 0; i &lt; 3; i++) { console.log(&#039;start for&#039;); callbackFunction(function() { console.log(&#039;in callback function&#039;); console.log(i + 10); }); console.log(&#039;end for&#039;); } start for end for start for end\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1249\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-1249","post","type-post","status-publish","format-standard","hentry","category-node-js"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1249"}],"version-history":[{"count":3,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1249\/revisions"}],"predecessor-version":[{"id":1255,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1249\/revisions\/1255"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}