๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ“—Nodejs : section28(1~3) - ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๋ณธ๋ฌธ

๐Ÿ“—Nodejs/โšกver.0

๐Ÿ“—Nodejs : section28(1~3) - ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

4:Bee 2024. 6. 24. 00:13
728x90

์šฐ๋ฆฌ๊ฐ€ 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๋กœ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ํฌ์ŠคํŒ…์„ ์ž‘์„ฑ ํ•  ๊ฒƒ์ด๋‹ค.

728x90
Comments