ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์•ž์„œ ์ž‘์„ฑํ–ˆ๋˜ ๋‚ด์šฉ์ค‘์— ๋น„๋™๊ธฐ ๊ด€๋ จ ์–˜๊ธฐ๋ฅผ ์ž ๊น ํ•œ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ(์•„๋งˆ ๋…ผ ๋ธ”๋กœํ‚น ์–˜๊ธฐํ•˜๋ฉด์„œ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค)

 Node.js ์ปจ์…‰ ์ค‘์— ์ด ์ ์ด ์ƒ๋‹นํžˆ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•˜๊ธฐ์— ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, Callbackํ•จ์ˆ˜์— ๊ด€ํ•œ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค.


๋น„๋™๊ธฐ๋ฅผ ๋ง๋กœ ํ’€์–ด์“ด๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ์žˆ์–ด์„œ ์–ด๋–ค ๋ฉ”์†Œ๋“œ์˜ ๋™์ž‘์ด ๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ž‘์—…์„ ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋‚˜์„œ ๊ณง๋ฐ”๋กœ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 


ํ•œ ๊ฐ€์ง€ ํ—ท๊ฐˆ๋ฆฐ ๊ฒƒ์ด ์žˆ๋Š”๋ฐ ์‹คํ–‰๋ฐฉ์‹์ด ๋งˆ์น˜ Java์˜ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ ๋ฐฉ์‹๊ฐ™์•˜๋Š”๋ฐ Javascript๋Š” ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค.(Node.js ๋„ ๋‹น์—ฐํžˆ ๋งˆ์ฐฌ๊ฐ€์ง€)

๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์™€ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ๋ฐฉ์‹์— ๊ด€ํ•œ ์–˜๊ธฐ๋Š” ๋‚ด ์ทจ์ง€์™€๋Š” ์•ฝ๊ฐ„ ๋ฒ—์–ด๋‚˜๋Š” ์–˜๊ธฐ ๊ฐ™์œผ๋‹ˆ ์ผ๋‹จ ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const http = require('http');
 
function onRequest(req,res) {
    console.log('request received');
    res.writeHead(200,{'Content-Type''text/plain'});
    res.end();
}
var fs = require('fs');
fs.readFile('./data.txt''utf8'function(err, data) {
  // the data is passed to the callback in the second argument
  console.log(data);
});
 
http.createServer(onRequest).listen(8888);
console.log('server has started.');
cs



์ €๋ฒˆ์— ๋ฐฐ์šด ์›น ์„œ๋ฒ„ ๊ตฌ๋™์‹œํ‚ค๋Š” ์ฝ”๋“œ๋ฅผ ์‘์šฉํ•ด์„œ ํ•œ๋ฒˆ ์ž‘์„ฑํ•ด๋ดค๋Š”๋ฐ ์ผ๋‹จ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ์ด๋ ‡๋‹ค.

---------------------------

server has started.

Hello Sync And Async


request received

request received

request received

request received

---------------------

์ผ๋‹จ function ์•ˆ์— ์žˆ๋Š” console ์ถœ๋ ฅ๋ฌธ์€ 8888ํฌํŠธ ๋ฒˆํ˜ธ์˜ listen์„ ๋ฐ›์•„์•ผ ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— localhost:8888์— ์ ‘์†ํ•˜์ง€ ์•Š์œผ๋ฉด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” log์ด๋‹ค. ๊ทธ๋Ÿผ ๋ฐ”๋กœ ๋‹ค์Œ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์ด๋ถ€๋ถ„์€ ๋”ฐ๋กœ ์„ค๋ช…ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ File System ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๋‹ค. 

์†Œ์Šค์ฝ”๋“œ๋งŒ ๋”ฑ ๋ด๋„ fs.readFile์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜ค๋Š” ํŒŒ์ผ์„ data๋กœ ๋ฐ›๋Š” ์—ญํ• ์„ ํ•˜๋Š”๊ฑธ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ

ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ๋กœ๊ทธ๋ฅผ ์ฐ๋Š” ์ž‘์—…์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งจ ์•„๋žซ์ค„์— ์žˆ๋Š” server has started ๋กœ๊ทธ๋ฅผ ๋จผ์ € ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค.


๋น„๋™๊ธฐ๋ฐฉ์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์†Œ์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ์„ ๋“ฏํ•˜๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ readFile์˜ ๋ฉ”๋‰ด์–ผ์„ ๋ณด๊ฒŒ๋˜๋ฉด

fs.readFile(path[, options], callback)

path์•ผ ํŒŒ์ผ ๊ฒฝ๋กœ์ผํ…Œ๊ณ  ์˜ต์…˜์€ ๋ชฉ์ ์—๋”ฐ๋ผ ๋‹ฌ๋ฆฌ ์ค„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ผํ…๋ฐ callback์ด๋ผ๋Š” ์• ๊ฐ€ ์ข€ ๋‚ฏ์„ค๋‹ค


Callback Function??

์ด๋ก ์  ์˜๋ฏธ๊ฐ€ ์†”์งํžˆ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ๋‹ค์งœ๊ณ ์งœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ์™€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค.


โ€ป Callback function์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ

1
2
3
4
5
6
var fs = require('fs');
 
var data = fs.readFileSync('input.txt');
 
console.log(data.toString());
console.log('End');
cs


๊ฒฐ๊ณผ ๊ฐ’ (input.txtํŒŒ์ผ์—๋Š” callback test๋ผ๋Š” data๊ฐ€ ์จ์ ธ์žˆ์Œ)

callback test

End



โ€ป Callback function์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

1
2
3
4
5
6
7
var fs = require('fs');
 
fs.readFile('input.txt',function(err,data){
    if (err) return console.err(err);
    console.log(data.toString());
});
console.log('end');

cs

๊ฒฐ๊ณผ ๊ฐ’

end

callback test


ํ•˜๋‚˜๋Š” readFileSync์ด๊ณ  ํ•˜๋‚˜๋Š” ๊ทธ๋ƒฅ readFile์ธ๋ฐ์š”..??

=> callback์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ ๊ฐ™์€ ๊ธฐ๋Šฅ์˜ ๋ฉ”์†Œ๋“œ์ด๋‹ค.

๋ญ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด callbackํ•จ์ˆ˜๋ฅผ ์จ์•ผ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค? ๋ผ๊ณ  ๋ด๋„ ๋˜์ง€์•Š๋‚˜ ์‹ถ๋‹ค.

๊ณ„์† ๊ณต๋ถ€๋ฅผ ํ•ด๋ด์•ผ ์•Œ ๊ฒƒ ๊ฐ™๊ธดํ•˜๋‹ค.


callbackํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๋Š์ง€ ์•Š๊ณ  ๋ฐ”๋กœ๋ฐ”๋กœ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒฐ๋ก !

์ด ๊ฐœ๋…์ด ์›์ฒด ์ค‘์š”ํ•˜๋‹ค๊ณ ํ•˜๋‹ˆ ์ข€ ๋” ๊ณต๋ถ€๋ฅผ ํ•ด๋ด์•ผ ๋ช…ํ™•ํ•œ ์˜๋ฏธ๋ฅผ ์•Œ ๊ฒƒ๊ฐ™๋‹ค.. 



๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ