๐Ÿ‘จ๐Ÿปโ€๐Ÿš’Asynchronous JavaScript(1) - ์ด๋ก 

๐Ÿ’ƒ๐Ÿป๋™๊ธฐ์™€ ๋น„๋™๊ธฐ - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์™€์˜ ๊ด€๊ณ„

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์™€์˜ ๊ด€๊ณ„๋ฅผ ์Šค์ ํ›‘๊ณ  ๊ฐ€์ž.

์ด ๊ด€๊ณ„๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ†ตํ•œ ๋™๊ธฐ, ๋น„๋™๊ธฐ๋ฅผ ๊ฐ€์ •ํ•ด ๋ณด์ž.

1. ๋™๊ธฐ์  (Synchronous) ์ธ ์˜ˆ

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์›น ํŽ˜์ด์ง€ ๊ทธ๋ ค์ค˜! ๋ผ๋ฉฐ ์š”์ฒญ์„ ํ•˜๋‚˜ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์ด ์˜ฌ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋งํ–ˆ๋‹ค. ์‘๋‹ต์ด ์˜ฌ๋•Œ๊นŒ์ง€ ํ•˜์–€? ํ˜น์€ ์•”๊ฒƒ๋„ ์—†๋Š” ํ™”๋ฉด์„ ๋ด์•ผ๋งŒ ํ•œ๋‹ค.

ํ•œ๊ตญ์ธ์˜ ํŠน์„ฑ์ƒ 5์ดˆ๋ฅผ ๋„˜๊ธฐ๊ธฐ ํž˜๋“ค๋‹ค.

2. ๋น„๋™๊ธฐ์  (Asynchronous) ์ธ ์˜ˆ

ํด๋ผ์ด์–ธํŠธ๋Š” ํŽ˜์ด์ง€ ๋ Œ๋” ์š”์ฒญ์„ ๋ณด๋‚ด ๋†“๊ณ  ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ผ์„ ์ง„ํ–‰ (ํƒˆ์ฃผ ๋ฐฉ์ง€์šฉ ๋กœ๋”ฉ ๋Œ์•„๊ฐ€๋Š” ๊ฑฐ ๋„์šฐ๋Š” ๋“ฑ๋“ฑ..) ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์„œ๋ฒ„์—์„œ ์‘๋‹ต์ด ์˜ค๋ฉด, ํ•ด๋‹น ๋ฆฌ์Šคํฐ์Šค๋ฅผ ๊ฐ–๊ณ  ๋˜ ์ผ์„ ์ฒ˜๋ฆฌ (์ „์ฒด ํ™”๋ฉด ๋ Œ๋”๋ง) ํ•œ๋‹ค.

โ™จ๏ธNon-Blocking ๊ณผ ์˜ˆ์‹œ

์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, total task time ์„ ์ง‘๊ณ„ํ•ด ๋ณด์ž.

๋น„๋™๊ธฐ์—์„œ๋Š” ์ด์ „ ๊ธฐ๋Šฅ์ด ๋‹ค์Œ ๊ธฐ๋Šฅ์„ blocking ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋น„๋™๊ธฐ๋Š” ๊ทธ๋ž˜์„œ Non-Blocking ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ์‹œ๋กœ ์œ ํŠœ๋ธŒ์˜ ๋กœ๋”ฉ์ด ์žˆ๋Š”๋ฐ - ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ญ”๊ฐ€ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Š๋‚Œ.

๊ทธ๋Ÿฐ๋ฐ ๋กœ๋”ฉ๋˜๋Š” ๋™์•ˆ ์•„๋ฌด๊ฒƒ๋„ ํด๋ฆญํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋งค์šฐ ๋‹ต๋‹ตํ•  ๊ฒƒ์ด๋‹ค. ๋„ทํ”Œ๋ฆญ์Šค, ์™“์ฑ  ๋“ฑ๋“ฑ.. ๋กœ๋”ฉ๋˜๋Š” ๋™์•ˆ ๋„๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ์ด๊ฒŒ ๋™๊ธฐ์ ์ด๋ผ๋ฉด ๋กœ๋”ฉ์ด ๋‹ค ๋  ๋•Œ๊นŒ์ง€๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค.

๋น„๋™๊ธฐ๋Š” ๋กœ๋”ฉ๋˜๋Š” ๋™์•ˆ์—๋„ ์ข‹์•„์š” ๋ฅผ ๋ˆ„๋ฅธ๋‹ค๋“ ๊ฐ€ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒ‰์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์ผ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์งˆ๊นŒ?

์•„๋ž˜์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ™•์ธํ•ด ๋ณด์ž. (์ผ๋‹จ ์ฒจ๋ถ€)


Written by@[DotoriMook]
ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ๋„ํ† ๋ฆฌ๋ฌต์˜ ๊ธฐ์ˆ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

GitHubMediumTwitterFacebook