๐Nodejs : section28(1~3) - ๋๊ธฐ์ ๋น๋๊ธฐ
์ฐ๋ฆฌ๊ฐ Nodejs๋ฅผ ์ ์ดํดํ๊ธฐ ์ํด์๋ ๋๊ธฐ์ ๋น๋๊ธฐ๋ฅผ ์์์ผ ํ๋ค. ์ง๊ธ๊น์ง ๋ด๊ฐ ์๊ณ ์๋ ๋๊ธฐ์ ๋น๋๊ธฐ๋ ์ด์ ๊ฐ๋ค. ๋๊ธฐ๋ ์์ฐจ์ ์ผ๋ก ์ผ์ ์ฒ๋ฆฌํ๋ค. ๋น๋๊ธฐ๋ ๊ฐ ๊ฐ์ธ๋ค์ด ์ผ์ ์์ ํ ์ ์๋ ์๊ฐ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์์ด์ ๋์ ๋ค๋ฐ์ ์ผ๋ก ์ผ์ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋น๋๊ธฐ๋ฅผ await๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก ์ ์ดํ๋ค.
๊ฐ์๋ฅผ ํ ๋๋ก ์ฒจ์ญ์ ํ๋ค๋ฉด
"๋๊ธฐ๋ ์ง๋ ฌ๋ก ๊ตฌ์ฑ์ด ๋์ด ์์ด์ ์ผ์ ์ฒ๋ฆฌํจ์ ์์ด์ ์๊ฐ ์์๊ฐ ๋ง์ด ๋ ๋ค. ํ์ง๋ง ๋น๋๊ธฐ๋ ๋ณ๋ ฌ๋ก ๊ตฌ์ฑ์ด ๋์ด ์์ด์ ์ผ์ ์ฒ๋ฆฌํจ์ ์์ด์ ํจ์จ ์ ์ด๋ค. Nodejs๋ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํ ์ข์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค."
์ด ์์
์ ํตํด์ ์ฐ๋ฆฌ๋ ์กฐ๊ธ ๋ ์ง๋ณด์ ์ด๊ณ Nodejs์ ๊ทผ๊ฐ์ด๋๋ Nodejs๋ฅผ ๊ณต๋ถ ํด ๋ณผ ๊ฒ์ด๋ค.
readFileSync( path, [option] ) : ๋๊ธฐ์ ๋ฐฉ์
/*
* sync.js
* readFileSync( path, [option] )
*/
let fs = require('fs');
console.log('A');
let result = fs.readFileSync('syntax/sample.txt', 'utf8');//๋๊ธฐ์ ๋ฐฉ์
console.log('C');
A
B
C
readFile( path, [option], callback ) : ๋น๋๊ธฐ์ ๋ฐฉ์
readFile์ ๋ณด๋ฉด์ Promise, then์ ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ค. ์ฐพ์๋ณด๋ readFilePromise ํจ์(๋๋ require('fs').promsies; ์ฌ์ฉ)๊ฐ ์์ง๋ง ์๊ฐํด๋ณด๋ฉด callback ํจ์๊ฐ ์กด์ฌํ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจ์ readFile์ ์ง๊ธ ๊ตณ์ด Promise ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด์ ๋น๋๊ธฐ๋ก ๋ง๋ค ํ์๊ฐ ์๋ค ๋๊ผ๋ค.
/*
* sync.js
* readFile( path, [option], callback )
*/
let fs = require('fs');
console.log('A');
//๋น๋๊ธฐ์ ๋ฐฉ์
fs.readFile('sample.txt', 'utf8', function (err, result) {
console.log(result);
});
console.log('C');
A
C
B
Callback
์ฝ๋ฐฑํจ์๋ ๋ด๋ถ์ ์ผ๋ก ๋์ํ๋ค. ๋จผ์ ์ ์ธ ๋์ด ์๋ ์ธ๋ถ ํจ์๊ฐ ์คํ์ด ๋๊ณ ๋ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ๋ด๋ถ ํจ์(callback)์ ์ ๋ฌ ํ ํจ์(callback)๊ฐ ๋์ํ๋ผ๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
/* callback.js */
let a = function () {
console.log('A');
}
function slowfunc(callback) {//๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ๊ฐ์ ธ์ฌ ๋ ()์์ด ์ฌ์ฉํด์ผํ๋ค.
callback()
}
slowfunc(a);
* ์ฐธ๊ณ ๋ก ์์ ์ฝ๋๋ ๋น๋๊ธฐ๊ฐ ์๋ ๋๊ธฐ์ ํจ์์ด๋ค. callback์ ์ดํดํ๊ธฐ ์ํ ์์์ผ ๋ฟ ๋น๋๊ธฐ์ ํจ์๊ฐ ์๋๋ค. ๊ตณ์ด ๋น๋๊ธฐ์ ์ผ๋ก ๊ตฌํ์ ํ๊ณ ์ถ๋ค๋ฉด setTimeoutํจ์๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ ์ด๋ ๊ฒฐ๊ตญ ๋น๋๊ธฐ ํจ์์ธ setTimeout์ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ์ ๋ด๊ฐ ์ง์ ๋น๋๊ธฐ ํจ์ ์์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ํ๊ณ๊ฐ ์๋ ๊ฒ ๊ฐ๋ค.
์ด๋ก์ ์ฐ๋ฆฌ๋ ๋น๋๊ธฐ์ callback์ ์๊ฒ ๋์๋ค. ๋ค์ ํฌ์คํ ์์ ์ด๋ฅผ ํ ๋๋ก ๋น๋๊ธฐ๋ฅผ nodejs๋ก ์ง์ ์ ์ดํ๋ ํฌ์คํ ์ ์์ฑ ํ ๊ฒ์ด๋ค.