๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Dev.log/Node.js

[Node.js ๊ต๊ณผ์„œ] #6. ์ด๋ฒคํŠธ ์ดํ•ดํ•˜๊ธฐ

์ด๋ฒคํŠธ ์ดํ•ดํ•˜๊ธฐ

์ŠคํŠธ๋ฆผ์„ ๋ฐฐ์šธ ๋•Œ on('data', ์ฝœ๋ฐฑ) ๋˜๋Š” on('end', ์ฝœ๋ฐฑ)์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋ฐ”๋กœ data๋ผ๋Š” ์ด๋ฒคํŠธ์™€ end๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•œ ๊ฒƒ์ด๋‹ค. createReadStream() ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์•Œ์•„์„œ data์™€ end ์ด๋ฒคํŠธ๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

  • on(์ด๋ฒคํŠธ๋ช…, ์ฝœ๋ฐฑ) : ์ด๋ฒคํŠธ ์ด๋ฆ„๊ณผ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ์˜ ์ฝœ๋ฐฑ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š” ๋™์ž‘์„ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. event2์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ํ•˜๋‚˜์— ์ด๋ฒคํŠธ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋‹ฌ์•„์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • addListener(์ด๋ฒคํŠธ๋ช…, ์ฝœ๋ฐฑ) : on๊ณผ ๊ธฐ๋Šฅ์ด ๊ฐ™๋‹ค.
  • emit(์ด๋ฒคํŠธ๋ช…) : ์ด๋ฒคํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•ด๋’€๋˜ ์ด๋ฒคํŠธ ์ฝœ๋ฐฑ์ด ์‹คํ–‰๋œ๋‹ค.
  • once(์ด๋ฒคํŠธ๋ช…, ์ฝœ๋ฐฑ) : ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ์ด๋‹ค. myEvent.emit('event3')์„ ๋‘ ๋ฒˆ ์—ฐ์† ํ˜ธ์ถœํ–ˆ์ง€๋งŒ ์ฝœ๋ฐฑ์ด ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค.
  • removeAllListeners(์ด๋ฒคํŠธ๋ช…) : ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. event4๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ–ˆ์œผ๋ฏ€๋กœ event4์˜ ์ฝœ๋ฐฑ์€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • removeListener(์ด๋ฒคํŠธ๋ช…, ๋ฆฌ์Šค๋„ˆ) : ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐ๋œ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•œ๋‹ค. ์—ญ์‹œ event5์˜ ์ฝœ๋ฐฑ๋„ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • off(์ด๋ฒคํŠธ๋ช…, ์ฝœ๋ฐฑ) : ๋…ธ๋“œ10 ๋ฒ„์ „์—์„œ ์ถ”๊ฐ€๋œ ๋ฉ”์„œ๋“œ๋กœ, removeListener์™€ ๊ธฐ๋Šฅ์ด ๊ฐ™๋‹ค. 
  • listenerCount(์ด๋ฒคํŠธ๋ช…) : ํ˜„์žฌ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋ช‡ ๊ฐœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

์ŠคํŠธ๋ฆผ์—์„œ ๋ณด์•˜๋˜ on('data')์™€ on('end')

→ ๊ฒ‰์œผ๋กœ ์ด ์ด๋ฒคํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋Š” ์—†์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” chunk๋ฅผ ์ „๋‹ฌํ•  ๋•Œ๋งˆ๋‹ค data ์ด๋ฒคํŠธ๋ฅผ emitํ•˜๊ณ  ์žˆ๋‹ค. ์™„๋ฃŒ๋˜์—ˆ์„ ๊ฒฝ์šฐ end ์ด๋ฒคํŠธ๋ฅผ emitํ•œ ๊ฒƒ์ด๋‹ค.