๊ด€๋ฆฌ ๋ฉ”๋‰ด

dada's

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ, Callback, Promise, Async&Await ๋ณธ๋ฌธ

Javascript

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ, Callback, Promise, Async&Await

dykang 2022. 8. 25. 20:58
728x90

 

 

๐Ÿ“๋™๊ธฐ(Synchronous)

: ๋™๊ธฐ๋ž€ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ์ง€๋งŒ ๋‹ค์Œ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ชจ๋“  ์ผ์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋จ.

 

๐Ÿ“ ๋น„๋™๊ธฐ(Asynchronous)

: ์š”์ฒญ์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋™์•ˆ ๋˜ ๋‹ค๋ฅธ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ชจ๋“  ์ผ์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋จ.

 

 

[ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๐Ÿ’ก ]

1. ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ์ด๋ฒคํŠธ๋Š” ์˜ˆ์ธก์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ˜ธ์ถœ์„ ์›ํ•˜๋Š” ๋‚ด์šฉ์„ callbackํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. (ํด๋ฆญ์ด๋‚˜ ๋งˆ์šฐ์Šค์˜ค๋ฒ„ ๋“ฑ๋“ฑ..)

 

2.๋„คํŠธ์›Œํฌ ์‘๋‹ต ์ฒ˜๋ฆฌ

ํ™”๋ฉด๋‹จ์—์„œ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ๊ทธ ์‘๋‹ต์ด ์–ธ์ œ ์˜ฌ ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์‘๋‹ต์ฒ˜๋ฆฌ๋„ ๋น„๋™๊ธฐ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ๋œ๋‹ค.

 

3. ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ๋“ฑ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—…

 

4. ์˜๋„์ ์œผ๋กœ ์‹œ๊ฐ„ ์ง€์—ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ (์•Œ๋žŒ๊ฐ™์€ ๊ฒƒ)

 

 

[ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ข…๋ฅ˜ ๐Ÿ’ก ]

 

Callback

๋ง ๊ทธ๋Œ€๋กœ ๋‚˜์ค‘์— ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ ํŠน์ • ์‹œ์ ์— ๋„๋‹ฌํ–ˆ์„๋•Œ ์‹œ์Šคํ…œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

Promise

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

ES6๋ถ€ํ„ฐ callbackํ•จ์ˆ˜์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•ด์ฃผ๋ฉฐ ์‹คํ–‰์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ์‹คํŒจํ–ˆ๋Š”์ง€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

new Promise()๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ฝœ๋ฐฑํ•จ์ˆ˜ ์ธ์ž๋Š” resolve,reject์ด๋‹ค. (resolve = ์„ฑ๊ณต, reject = ์‹คํŒจ)

.then()์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‹คํŒจ์˜ ๊ฒฝ์šฐ .then().catch()์ด๋Ÿฐ์‹์œผ๋กœ catch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋ฐ›์œผ๋ฉด ์—๋Ÿฌ ๋‚ด์šฉ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

Async / Await

node.js 7.6์ด์ƒ๋ถ€ํ„ฐ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์ด๋‹ค.

promise๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉํ–˜ ํ•จ์ˆ˜ ์•ž์— async๋ฅผ ์„ ์–ธ ํ•ด์ฃผ๊ณ  ๊ทธ ์•ˆ์—์„œ await๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜์˜ ์ž‘์—…์ด ๋๋‚˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ณ  ๊ฐ’์ด ๋ฆฌํ„ด๋˜๋ฉด ๋‹ค์Œ์ž‘์—…์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

async์•ˆ์—์„œ promise๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ๋•Œ๋ฌธ์— chtch๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
Comments