์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- slow and steady
- promise
- ๋น๋๊ธฐ
- sql
- prj
- object
- Project
- mysql
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- database
- json
- callback
- async
- webpack
- await
- Import
- ๋๊ธฐ
- execCommand
- Porject
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- ๊ฒ์
- db
- https://m.blog.naver.com/tt2t2am1118/221010125300
- js
- ํผํ
- eport
- ajax
- JS #ํ๋ก์ ํธ
- setTimeout()
- addEventListener
- Today
- Total
C-log
JS์ ํต์ฌ! ํผํ~ with setTimeout()&Promise ๋ณธ๋ฌธ
ํผํ๋ ํผ์ ํ๋ก์ ํธ์ ์ฝ์์ด๋ค.
ํผ์ ํ๋ก์ ํธ ์ด๋ฆ์ 'delivery ๋๊ฐ ๋จผ์ ๋์ฐฉํ๋' ์ด๋ค. setTimeout์ ํตํ ๋น๋๊ธฐ์ ๋์์ ์ดํด๋ณด๊ธฐ ์ํด ๋ง๋ ์์ ์ด๋ค. ์ด๋ ค์ด ์ฝ๋๋ ์๋์ง๋ง ๊ฐ๋จํ๊ฒ ์ฝ๊ฒ ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒ ์์ฑํ๋ฉด ๋น๋๊ธฐ์ ์ธ ๋ชจ์ต์ด ์ ๋ํ๋์ง ์๋๋ค.
์ ๊ฒฐ๊ณผ๋ง ๋ณด๋๋ผ๋ ๋จ์ํ ์์ฐจ์ ์ผ๋ก ์ดํํ ๊ฒ ์ฒ๋ผ๋ณด์ด์ง๋ง ์กฐ๊ธ ๋ ์๊ฐํด๋ณด๋ฉด ์ ํ ๊ทธ๋ ์ง ์๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋น๋๊ธฐํจ์์ธ setTimeout์ ์ฌ์ฉํ์ง ์์๋ค๋ฌ๋ผ๋ฉด ํ๋์ ํฐ ์๊ฐ(์ฆ๊ฐ)ํจ์๋ฅผ ์ ์ํ๊ณ ๊ทธ ์์์ randomํจ์๋ฅผ ์ ์ํ๊ณ ์ดํ randomํจ์์์ ํน์ ๊ฐ ๋ณ์๋ฅผ ๋ฐ๊ณ ํน์ random๊ฐ์ ๋ฐ์ ๋ณ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์กฐ๊ฑด๋ฌธ(if,switch/case)๋ฌธ๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ง๋ค์ด ํด๋น delivery๊ฐ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋์ฐฉ ์๊ฐ์ ๋ฐ์ํ๊ฒ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๊ฒ์ ๋น๋๊ธฐ๊ฐ ์๋๋ค.
์ ์ฝ๋๋ฅผ ์์๋ก ๋น๋๊ธฐ๋ฅผ ์ค๋ช ํ์๋ฉด ์ฒซ ๋ฒ์งธ delay('delivery1')ํจ์๊ฐ ํธ์ถ๋๋ฉด์ ๋น๋๊ธฐ ํจ์์ธ setTimeout์ด ํด๋น ์นด์ดํธ๋ฅผ ํ๊ธฐ ์์ํ๋ค. ๊ทธ ์ฌ์ด์ ๋ ๋ฒ์งธ delay('delivery2')ํจ์๊ฐ ํธ์ถ๋๋ฉด์ setTimeout์ด ํด๋น ์นด์ดํธ๋ฅผํ๋ค. (์์ ํจ์๊ฐ ๋์์ ์์ํ๋ค ๋ณด๊ธฐ์ ์ด๋ ต๋ค. JS๋ ์์ฐจ์ ์ผ๋ก ์ฝ๋๋ฅผ ํ์ฑํ๊ธฐ ๋๋ฌธ์ด๋ค.) ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์์ ์๋ก ๋ค๋ฅธ ์์ ์ ์ํํ๊ณ ์๋ ๊ฒ์ด๋ค.
์กฐ๊ธ ๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํด setIntervalํจ์๋ฅผ ํตํด setTimeoutํจ์๊ฐ ๋ฐ๋ํ๊ณ ์๋ ๋์์ ๋ค๋ฅธ ์์ ์ด ๋์์ ์ด๋ฃจ์ด์ง๊ณ ์๋ค๋ ๊ฒ์ ์ง๊ด์ ์ผ๋ก ํํํด ๋ดค๋ค.
๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
์ด์ ๋น๋๊ธฐ์ ๋ํ ๊ฐ๋ ์ ํ์คํ๊ฒ ๊ตณ์ณค์ ๊ฒ์ด๋ผ ๋ณธ๋ค. ์์ ์ฝ๋๋ ์ผ๋ฒฝํ ๋น๋๊ธฐ ์ฝ๋๋ผ๊ณ ๋ณด๊ธฐ์ ๋ง์ด ๋ถ์กฑํ๋ค. promiseํจ์๋ฅผ ์ฌ์ฉํด ๋ฆฌํฉํ ๋งํด ๋์ฑ ๋น๋๊ธฐ์ ์ธ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณด์.
์ฐธ๊ณ ๋ก setTimout์ ์ฝ๋ฐฑํจ์๋ฅผ ์ง์ ํ ์ดํ ์ผ์ ์๊ฐ์ด ์ง๋ ํ ํด๋น ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฅ ํจ์ ์ด๋ค.
promise๋ก ์ด๋ฃจ์ด์ง ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
๋๋ค๊ฐ์ด ๋์ค๊ณ ๋ฐฐ๋ฌ ์น์ธ ์ฌ๋ถ์ ๋ฐ๋ผ res์ reject๊ฐ ๋ค๋ฅด๊ฒ ๋์ค๊ณ ์ด์ ๋ฐ๋ผ ๋ฐฐ๋ฌ ์๊ฐ ๋ฟ๋ง ์๋๋ผ ๋ฐฐ๋ฌ์ ์น์ธ ์ฌ๋ถ๊ฐ ๋ฐ๋๊ฒ ๋ง๋ ๋ค. 0:์ ๊ฐ๋ถ๊ตฌ์ง์ญ, 1: ๋
ธ์๊ตฌ์ง์ญ, 2: ๊ฐ๋จ๊ตฌ์ง์ญ ๋ฑ
์ฌ๊ธฐ์ ๋์ค์ ๋ค์ ์ดํด๋ณด๊ณ ์ถ์ ๊ฒ์ ๊ฒ์ ์๋ ์ฝ๋์ ๊ฐ์ด delay๋ฅผ ์ ์ญ ๋ณ์ ๊ฐ์ผ๋ก ๋์์ ๋์ ๊ฐ์ด ๋ค๋ฅด๊ฒ ๋์ค๋ ๋ถ๋ถ์ด๋ค. ๋ ๊ฒฐ๊ณผ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ดํด ๋ณด์. chat gpt๋ฅผ ํตํด ๋ต์ ์ป์ด ๋ณด์์ง๋ง ์์ ํ ์ดํด๊ฐ์ง ์์๋ค.
์ฌ๊ธฐ๊น์ง setTimeout๊ณผ Promise๋ฅผ ํ์ฉํ ๋น๋๊ธฐ์ ๋์ ์๋ฆฌ๋ฅผ ํ์ ํด ๋ณด์๋ค. ์ ๋ฐ์ ์ผ๋ก ์คํ๋๋ ๋ฐฉ์์ ์ดํดํ์ ๊ฒ์ด๋ผ ๋ณธ๋ค. ์์ฝ๊ฒ๋ Promise์ then๊ตฌ๋ฌธ๊ณผ sesolve ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉ ํด๋ณด์์ผ๋. catch์ reject ๋งค๊ฐ๋ณ์๋ฅผ ์์ง ๋ค๋ฃจ์ด ๋ณด์ง ๋ชปํ๋ค. ์ฐจํ์ ์ด ํฌ์คํ ์ ์ถ๊ฐํด์ ์์ฑ ํด๋ณด๊ฒ ๋ค.
๋๊ธฐ์ ๋น๋๊ธฐ์ ๊ฐ๋ ๊ณผ ์ฐจ์ด
๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๋ฐฉ์์ธ ๋๊ธฐ์ ๋น๋๊ธฐ. ์ด ๋์ ๊ฐ๋ ๊ณผ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋๊ธฐ (Synchronous : ๋์์ ์ผ์ด๋๋) ๋์์ ์ผ์ด๋๋ค๋ ๋ป์ด๋ค. ์์ฒญ๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋๋ค๋ ์ฝ์์ด
dreamcoding.tistory.com
<๋น๋๊ธฐ์ ๋๊ธฐ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ์ฝ๊ฒ ์ ์ค๋ช ํ ๊ธ์ด๋ค.>
'๐JS > โกver.1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS์ ํต์ฌ! Introducing ์ํ์ฝ๋ฉ! (0) | 2023.04.25 |
---|---|
JS์ ํต์ฌ! ํผํ~ with async&await (0) | 2023.04.25 |
JS์ ํต์ฌ! async& await+Plus (0) | 2023.04.25 |
JS์ ํต์ฌ Promise+Plus (0) | 2023.04.25 |
JS์ ํต์ฌ! : Promise์ async ๊ทธ๋ฆฌ๊ณ await (0) | 2023.04.17 |