ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ณด์ถฉ] Node.js ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ(aka. callback function)
๋๋์ด๋ฐ๐พ 2018. 3. 22. 01:01์์ ์์ฑํ๋ ๋ด์ฉ์ค์ ๋น๋๊ธฐ ๊ด๋ จ ์๊ธฐ๋ฅผ ์ ๊น ํ์ ์ด ์์๋๋ฐ(์๋ง ๋ ผ ๋ธ๋กํน ์๊ธฐํ๋ฉด์ ํ๋ ๊ฒ ๊ฐ๋ค)
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)
์ด๋ก ์ ์๋ฏธ๊ฐ ์์งํ ์ ์ดํด๊ฐ ๋์ง ์์์ ๋ค์ง๊ณ ์ง ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํ ์ฝ๋์ ์ฌ์ฉํ์ง ์์ ์ฝ๋๋ฅผ ๋น๊ตํด๋ณด์๋ค.
โป 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'); |
๊ฒฐ๊ณผ ๊ฐ
end
callback test
ํ๋๋ readFileSync์ด๊ณ ํ๋๋ ๊ทธ๋ฅ readFile์ธ๋ฐ์..??
=> callback์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ์ง ์๊ธฐ ์ํด์ ์ฌ์ฉํ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ฉ์๋์ด๋ค.
๋ญ ์ฝ๊ฒ ๋งํ๋ฉด callbackํจ์๋ฅผ ์จ์ผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค? ๋ผ๊ณ ๋ด๋ ๋์ง์๋ ์ถ๋ค.
๊ณ์ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ ์ ๊ฒ ๊ฐ๊ธดํ๋ค.
callbackํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๋์ง ์๊ณ ๋ฐ๋ก๋ฐ๋ก ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ค๋ ๊ฒฐ๋ก !
์ด ๊ฐ๋ ์ด ์์ฒด ์ค์ํ๋ค๊ณ ํ๋ ์ข ๋ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ ๋ช ํํ ์๋ฏธ๋ฅผ ์ ๊ฒ๊ฐ๋ค..
'Node.js > Node.js ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
express(2) - ์ ์ ํ์ผ์๋น์ค (0) | 2018.04.02 |
---|---|
4. express (1) (0) | 2018.03.26 |
3. ๊ฐ๋จํ ์น ์๋ฒ ๋ง๋ค๊ธฐ (0) | 2018.03.21 |
2. Node.js ๊ฐ๋ฐํ๊ฒฝ ์ค์ (Mac OSX) (4) | 2018.03.21 |
1. Node Js ๋? [ํ๋กค๋ก๊ทธ] (0) | 2018.03.21 |
- Total
- Today
- Yesterday
- node.js backend
- backend-framework
- ํ๋ก๊ทธ๋๋จธ์ค
- android
- Spring Async
- nestjs config
- ์๊ณ ๋ฆฌ์ฆ
- docker mysql
- sequelize
- nestjs project
- node.js
- ๊ธฐ์์ฒญAPI
- Promise error
- @nestjs/config
- nestjs typeorm
- Promise bulk
- nestjs module
- nestjs directory
- nestjs/cli
- Spring
- JavaScript
- NestJS
- Request_Limit_Exceeded
- nestjs doc
- foreignkey
- DeferredResult
- nestjs configService
- typeorm ์ฐ๊ฒฐ
- typeorm
- ๋น๋๊ธฐ ์์ฒญ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |