๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+23] ๋น„๋™๊ธฐ ํ˜ธ์ถœ๊ณผ ํƒ€์ด๋จธ API

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 9. 29.

 

 

D+23

-  ๋น„๋™๊ธฐ ํ˜ธ์ถœ๊ณผ ํƒ€์ด๋จธ API -

(feat. ๋‹ค์„ฏ ๋ฒˆ์งธ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

 


 

 

๋น„๋™๊ธฐ ํ˜ธ์ถœ

 

 

๋™๊ธฐ ํ˜ธ์ถœ๊ณผ ๋น„๋™๊ธฐ ํ˜ธ์ถœ์˜ ํŠน์ง•

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ๋Š” ์ „ํ™”์™€ ๋ฌธ์ž๋ฅผ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ „ํ™” (๋™๊ธฐ ํ˜ธ์ถœ) ๋ฌธ์ž (๋น„๋™๊ธฐ ํ˜ธ์ถœ)
ํ•˜๋˜ ์ผ์„ ๋ฉˆ์ถ”๊ณ  ๋ฐ›์•„์•ผ ํ•œ๋‹ค (blocking) ํ™•์ธ ํ›„, ๋‚˜์ค‘์— ๋‹ต์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค (non-blocking)
์š”์ •์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค (synchronous) ์š”์ •์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค (asynchronus)

 

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ๋ฅผ ๋“ค์–ด ์ปคํ”ผ์ฃผ๋ฌธ์„ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฃผ๋ฌธ์„ ๋ฐ›์•˜์„ ๊ฒฝ์šฐ

๋น„๋™๊ธฐ ๋ฐฉ์‹์ด ํ›จ์”ฌ ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Q > ๋™๊ธฐ : ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค.

1. ์†๋‹˜1์ด ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค.
2. ์ ‘์ˆ˜๋ฅผ ๋ฐ›์€ ์ง์›์ด ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ๋‚ด๋ฆฐ๋‹ค.
3. ์ง์›์ด ์†๋‹˜1์—๊ฒŒ ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
4. ์†๋‹˜ 2๊ฐ€ ์นดํŽ˜๋ผ๋–ผ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค.
5. ์ ‘์ˆ˜๋ฅผ ๋ฐ›์€ ์ง์›์ด ์นดํŽ˜๋ผ๋–ผ๋ฅผ ๋งŒ๋“ ๋‹ค.
6. ์ง์›์ด ์†๋‹˜ 2์—๊ฒŒ ์นดํŽ˜๋ผ๋–ผ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธ๋ฐ›์•˜์„ ๊ฒฝ์šฐ ์ฐจ๋ก€์ฐจ๋ก€ ๊ณผ์ •์„ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ด์ง€ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

Q > ๋น„๋™๊ธฐ : ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

1. ์†๋‹˜ 1์ด ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค.
     1-1. ์ ‘์ˆ˜๋ฅผ ๋ฐ›์€ ์ง์›์ด ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ๋‚ด๋ฆฐ๋‹ค.
     1-2. ์•„๋ฉ”๋ฆฌ์นด๋…ธ๊ฐ€ ์™„์„ฑ๋˜๋ฉด ์ง์›์ด ์†๋‹˜ 1์„ ๋ถ€๋ฅธ๋‹ค.
     1-3. ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ์†๋‹˜ 1์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

2. ์†๋‹˜ 2๊ฐ€ ์นดํŽ˜๋ผ๋–ผ๋ฅผ ์ฃผ๋ฌธํ•œ๋‹ค.
     2-1. ์ ‘์ˆ˜๋ฅผ ๋ฐ›์€ ์ง์›์ด ์นดํŽ˜๋ผ๋–ผ๋ฅผ ๋งŒ๋“ ๋‹ค.
     2-2. ์นดํŽ˜๋ผ๋–ผ๊ฐ€ ์™„์„ฑ๋˜๋ฉด ์ง์›์ด ์†๋‹˜2๋ฅผ ๋ถ€๋ฅธ๋‹ค.
     2-3. ์นดํŽ˜๋ผ๋–ผ๋ฅผ ์†๋‹˜ 2์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

๋ฐ˜๋ฉด์— ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธ๋ฐ›์•˜์„ ๊ฒฝ์šฐ์—๋Š” ์ผ๋‹จ ์ฃผ๋ฌธ์„ ๋ฐ›๊ณ ๋‚œ ๋’ค์— ์ปคํ”ผ๋ฅผ ์ œ์ž‘ํ•ด ํ›จ์”ฌ ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ๊ณผ์ •์„ ๋ณด์—ฌ์ค€๋‹ค.

 

 


ํƒ€์ด๋จธ API

 

 

setTimeout (callback, millisecond)

์ผ์ • ์‹œ๊ฐ„ ํ›„์— ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

setTimeout(function() {
	console.log('1์ดˆ ํ›„ ์‹คํ–‰');
}, 1000);

 

 

setInterval (callback, millisecond)

์ผ์ • ์‹œ๊ฐ„์˜ ๊ฐ„๊ฒฉ์„ ๊ฐ€์ง€๊ณ  ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

setInterval(function() {
	console.log('1์ดˆ๋งˆ๋‹ค ์‹คํ–‰');
}, 1000);

 

 

clearInterval (timerId)

๋ฐ˜๋ณต ์‹คํ–‰์ค‘์ธ ํƒ€์ด๋จธ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

var timer = setInterval(function() {
	console.log('1์ดˆ๋งˆ๋‹ค ์‹คํ–‰');
}, 1000);

clearInterval(timer); // ๋”์ด์ƒ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์Œ

 

 

 


 

 

๋ฒŒ์จ ๋‹ค์„ฏ ๋ฒˆ์งธ ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

 

์‚ฌ์‹ค ์ด๋ฒˆ ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋‚ด์ผ์ด๋ฉด ์‹œ์ž‘๋  ๊ธด ์—ฐํœด์— ์„ค๋ ˆ๋ฒ„๋ฆฌ๋Š” ๋ฐ”๋žŒ์—

ํ‰์†Œ๋ณด๋‹ค ์ง‘์ค‘ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋ถ€์กฑํ–ˆ์—ˆ๋˜ ํ„ฐ๋ผ ์•„์‰ฌ์›€์ด ์กฐ๊ธˆ ๋“ค์—ˆ๋˜ ์‹œ๊ฐ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋˜ํ•œ ์ด๋ฒˆ ํŒŒํŠธ๋„ ์ €๋ฒˆ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚ด๊ฒŒ๋Š” ๋„ˆ๋ฌด๋‚˜ ์–ด๋ ค์› ๊ธฐ ๋•Œ๋ฌธ์—

์ขŒ์ ˆ์‹œ๊ฐ„ + ๊ฐœ๋…์ดํ•ด์‹œ๊ฐ„ ์œผ๋กœ ์ธํ•ด ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š” ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

ํŽ˜์–ด๋‹˜์ด ์ž‘์„ฑํ•ด์ฃผ์‹  ๋ฆฌ๋ทฐ์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ์—๋งŒ ๋„ˆ๋ฌด ๊ธ‰๊ธ‰ํ•ด์„œ ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•˜์ง€ ๋ชปํ•˜๊ณ 

๋‹จ์ˆœํ•˜๊ฒŒ ํ’€์–ด๋‚ด๋„ ํŠน๋ณ„ํ•œ ์„ฑ๊ณผ๋ฅผ ๋‚ด์ง€ ๋ชปํ•œ... ์•„์‰ฌ์›€์ด ๋„ˆ๋ฌด๋‚˜ ๋“ ๋‹ค ใ… ใ…œ

 

์ถ”์„์—ฐํœด๋•Œ ์ŠคํŠธ๋ ˆ์Šค ์ซ™ํ’€๊ณ  ๋‹ค์‹œ ์—๋„ˆ์ง€๋ฅผ ๋ณด์ถฉํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.

(์•„ ๋ฌผ๋ก  ๊ณต๋ถ€๋„ ๊ผฌ๋ฐ•๊ผฌ๋ฐ• ํ• ๊ฒƒ์ด๋‹ค! ๋ฏธ๋ž˜์˜ ๋‚˜์•ผ... ์ œ๋ฐœ ๊ณต๋ถ€ํ•ด๋ผ ๐Ÿ™๐Ÿป)

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€