TIL 29: [JS/Node] ๋น๋๊ธฐ - ํ์ด๋จธ/ํ์ผ์ด๊ธฐ
์ค๋์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋น๋๊ธฐ์ ๋ํด์ ๊ณต๋ถํ์ต๋๋ค. ์ด ๋ถ๋ถ์ ์์ ํ ์ฒ์ ๋ฐฐ์ด ๋ถ๋ถ์ด๋ผ ์์ง ๋ง์ด ๋ฏ์ค์ง๋ง ์์ฃผ ๋ณด๋ฉด์ ์ต์ํด์ง๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค!
๋น๋๊ธฐ ์ ์ ๋ฐ ์ฌ๋ก
๋๊ธฐ์ ๋ฌ๋ฆฌ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ์์ฒญ๊ณผ ๋์์ ์ผ์ด๋์ง ์๋ ๊ฒ์ ๋งํฉ๋๋ค. ๋ฐ๋ผ์ ์์ฒญ ์ดํ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ด ๊ณ์ํด์ ์์ ํ ์ ์๊ฒ ํด์ค๋๋ค.
์ฌ๋ก: DOM Elemenet์ ์ด๋ฒคํธ ํธ๋ค๋ฌ, ํ์ด๋จธ, ์๋ฒ์ ์์ ์์ฒญ ๋ฐ ์๋ต
Callback
Async(๋น๋๊ธฐ)์์ ์คํ๋๋ ์์๋ฅผ ํต์ ํ๊ณ ์ถ์ ๋ Callback ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Error Handling์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ฃผ๋ก (err, data) ์์๋ก ๋ฐ๊ฒ๋ฉ๋๋ค.
ํ์ง๋ง Callback ํจ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ Callback Hell์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
Promise
Callback์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ผ์ข
์ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ new Promise()
๋ฅผ ํตํด ๋ง๋ค ์ ์์ต๋๋ค.
ํจ์๋ฅผ ๋ง๋ค ๋ Callback์ ๋ง๋ค์ง ์๊ณ , ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ resolve
์ reject
ํจ์๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
์ดํ Callback๊ณผ ๋ค๋ฅด๊ฒ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํด๋ .then()
๊ณผ return
์ ์ด์ฉํด์ ๊ฐ๋
์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋ํ catch()
๋ฅผ ํ์ฉํด์ ์ฝ๋์ ๋ง์ง๋ง ๋ถ๋ถ์ ํ๋ฒ์ ์๋ฌ๋ฅผ ์ก์ ์ ์์ต๋๋ค.
Promise.all() ๋ฉ์๋๋ ์ํ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ์ฃผ์ด์ง ๋ชจ๋ Promise๋ฅผ ์ดํํฉ๋๋ค.
์ดํ ๊ฒฐ๊ณผ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ์ํ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ํฌํจ๋ ๋ชจ๋ ๊ฐ์ ๋ด์ ๋ฐฐ์ด์ ๋๋ค.
์ฃผ์ด์ง Promise ์ค ํ๋๋ผ๋ ๊ฑฐ๋ถํ๋ฉด, ๋ค๋ฅธ ํ๋ก๋ฏธ์ค์ ์ดํ ์ฌ๋ถ์ ์๊ด์์ด ์ฒซ ๋ฒ์งธ ๊ฑฐ๋ถ ์ด์ ๋ฅผ ์ฌ์ฉํด ๊ฑฐ๋ถํฉ๋๋ค.
Async / Await
์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ argument ์์ async
๋ฅผ ๊ผญ ์จ์ค์ผ ํฉ๋๋ค.
Promise์ ๋ฌ๋ฆฌ ๋ฆฌํด๋ฌธ๋ ์ฌ์ฉํ ํ์๊ฐ ์์ด์ ์ข ๋ ๊น๋ํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ์ด๋จธ ๊ด๋ จ API
setTimeout(callback, millisecond)
setTimeout(function() {
console.log('5์ด ํ ์คํ');
}, 5000);
//123
์ผ์ ์๊ฐ ํ์ ์คํํ๋ ํจ์์ ๋๋ค.
๋ฆฌํด ๊ฐ์ ์์์ ํ์ด๋จธ ID์ ๋๋ค.
setInterval(callback, millisecond)
setInterval(function() {
console.log('5์ด๋ง๋ค ์คํ');
}, 5000);
//345
์ผ์ ์๊ฐ์ ๊ฐ๊ฒฉ์ ๊ฐ์ง๊ณ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๋ ํจ์์ ๋๋ค.
๋ฆฌํด ๊ฐ์ ์์์ ํ์ด๋จธ ID์ ๋๋ค.
clearInterval(timerId)
const timer = setInterval(function() {
console.log('5์ด๋ง๋ค ์คํ');
}, 5000);
clearInterval(timer);
setInterval๋ก ๋ฐ๋ณต ์คํ์ค์ธ ํ์ด๋จธ๋ฅผ ์ข ๋ฃํด์ค๋๋ค.
๋ฆฌํด ๊ฐ์ ์์ต๋๋ค.
Node.js ๋ชจ๋ ์ฌ์ฉ๋ฒ
fs.readFile(path[, options], callback)๋ฅผ ์ด์ฉํด์ ๋น๋๊ธฐ์ ์ผ๋ก ํ์ผ ๋ด์ฉ ์ ์ฒด๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
path์๋ ํ์ผ๋ช ์ด๋ ํ์ผ URL ๋ฑ์ ์ ๋ ฅํฉ๋๋ค.
options๋ ๊ฐ์ฒด ํํ ๋๋ ๋ฌธ์์ด๋ก ๋๊ธธ ์ ์์ต๋๋ค.
callback์ ํ์ผ์ ์ฝ๊ณ ๋ ํ์ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ํจ์์ ๋๋ค.