๐Ÿคท๐Ÿปโ€โ™€๏ธ ๋™๊ธฐ? ๋น„๋™๊ธฐ?

๋‚˜์ฟ ํฌยท2023๋…„ 1์›” 7์ผ
0

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ (Synchronous)

  • ํ•œ๋ฒˆ์— ์ฝ”๋“œ ํ•œ์ค„์”ฉ ์ฐจ๋ก€๋กœ ์‹คํ–‰

๋น„๋™๊ธฐ์‹์ฒ˜๋ฆฌ(Asynchronous)
์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์žˆ์œผ๋ฉด ์ œ๊ปด์ฃผ๊ณ  ๋‹ค๋ฅธ๊ฑฐ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๋•๋ถ„์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ = ์›น๋ธŒ๋ผ์šฐ์ €์˜ ํŠน์ˆ˜์„ฑ)

ํŒŒ์ด์ฌ์—์„œ๋Š”

print(1)
time.sleep(1) // 1์ดˆ ์‰ฌ์–ด๋ผ => 1์ดˆ ๋ฉˆ์ท„๋‹ค๊ฐ€ 2์‹คํ–‰๋จ(๋ธ”๋กœํ‚น)
print(2)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š”

console.log(1);
setTimeout(()=> {console.log(2)},1000); //๋ฉˆ์ถ”์ง€ ์•Š๊ณ  3์ด ์‹คํ–‰๋จ
console.log(3);

//setTimeout(()=> {console.log(2)},1000); ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌ ๋„์™€์ฃผ๋Š” ํ•จ์ˆ˜

setTimeout, eventListener, ajax ์ฝ”๋“œ๊ฐ™์ด ์‹คํ–‰๋˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๋“ค์€
Web API๋ผ๋Š” ๊ณต๊ฐ„(์‹คํ–‰ ๋Œ€๊ธฐ์‹ค)์œผ๋กœ ๋ณด๋‚ด์„œ ํ•ด๊ฒฐ์ด ๋˜๊ธธ(์‹œ๊ฐ„์ด ์ง€๋‚˜๊ธธ) ๊ธฐ๋‹ค๋ฆผ.
Web API ๋•๋ถ„์— ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์žˆ์œผ๋ฉด ์ œ๊ปด๋‘๊ณ (๋ธ”๋กœํ‚น์ด๋ผ๋Š” ๋ฉˆ์ถ”๋Š” ๊ณผ์ •์—†์ด) ๋‹ค๋ฅธ๊ฑฐ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์—ฐ์‚ฐ์„ ๋งŒ๋‚˜๋ฉด ๋ฉˆ์ถค ( = ๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ, synchronous )
Web API์™€ ์—ฐ๊ด€๋œ ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜๋“ค์„ ์“ฐ๋ฉด ์ž‘์—…์ด ์˜ค๋ž˜๊ฑธ๋ฆด ๋•Œ ์ •์ง€ ์—†์ด ๋‹ค๋ฅธ๊ฑฐ๋ถ€ํ„ฐ ์‹คํ–‰์ด ๊ฐ€๋Šฅ( = ๋น„๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ, asynchronous )

ํ•˜์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด๋ฅ˜ํ–ˆ๋‹ค๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด? = ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ

console.log(1);
setTimeout(()=> {console.log(2)},1000); //๋ฉˆ์ถ”์ง€ ์•Š๊ณ  3์ด ์‹คํ–‰๋จ

//()=> {console.log(2)} ์ฝœ๋ฐฑํ•จ์ˆ˜์ž„

์ฝœ๋ฐฑํ•จ์ˆ˜๋ž€?
ํ•จ์ˆ˜์•ˆ์— ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ.
์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์™ผ์ชฝ์— ์žˆ๋Š”๊ฑฐ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์„œ ์‹คํ–‰ํ•ด์ค˜๋ผ๋Š” ๋œป์œผ๋กœ ์”€
์ฝœ๋ฐฑํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ ๋™๊ธฐ/๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฑด ์•„๋‹ˆ๊ณ , ํ•จ์ˆ˜ ๋””์ž์ธ ํŒจํ„ด์ผ ๋ฟ

0๊ฐœ์˜ ๋Œ“๊ธ€