[🐱 μžλ°”μŠ€ν¬λ¦½νŠΈ] 비동기(Asynchronous)

dsfasdΒ·2022λ…„ 9μ›” 25일
0

μžλ°”μŠ€ν¬λ¦½νŠΈ 동기와 비동기

🍎 동기적 호좜 -> μˆœμ„œλŒ€λ‘œ μ‹€ν–‰

ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œ μˆœμ„œλŒ€λ‘œ ν•œ 쀄씩 μ‹€ν–‰
λ”°λΌμ„œ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ μš”μ²­μ„ λ°›μŒκ³Ό λ™μ‹œμ— 일을 μˆ˜ν–‰

blocking λ°œμƒ : μš”μ²­μ— λŒ€ν•œ κ²°κ³Όκ°€ λ™μ‹œμ— μΌμ–΄λ‚œλ‹€.
ν•¨μˆ˜κ°€ μ‹€ν–‰ 쀑인 λ™μ•ˆ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨ 및 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†λ‹€.

🍎 비동기적 호좜 -> μˆœμ„œμ— 영ν–₯을 쀌

-> 동기적 ν•¨μˆ˜μ˜ 문제점의 λŒ€μ•ˆμœΌλ‘œ 비동기 호좜이 μ‚¬μš©λœλ‹€.

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μš”μ²­μ„ λ‘” μƒνƒœλ‘œ 일을 계속 진행
μ„œλ²„μ˜ 응닡을 λ°›μœΌλ©΄ 응닡에 λŒ€ν•œ 일을 μˆ˜ν–‰

blocking λ°œμƒν•˜μ§€ μ•ŠμŒ : μš”μ²­μ— λŒ€ν•œ κ²°κ³Όκ°€ λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.

이전 μˆ˜ν–‰μ΄ λ‹€μŒ μˆ˜ν–‰μ„ blocking ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ,
일의 λ™μ‹œ μˆ˜ν–‰μ΄ κ°€λŠ₯ν•΄μ Έ λ™μΌν•œ 일을 λ™κΈ°λ‘œ μ²˜λ¦¬ν–ˆμ„ λ•Œλ³΄λ‹€ μž‘μ—… μ‹œκ°„μ΄ 짧닀.


λΉ„λ™κΈ°μ˜ μ£Όμš” 사둀

ν΄λ¦­μ‹œ 이벀트 λ°œμƒ, 타이머 μ‹€ν–‰, μ„œλ²„μ— μš”μ²­μ΄ 였면 응닡 λ“±
λͺ¨λ‘ μˆœμ„œμ— 영ν–₯을 μ£ΌλŠ” 사둀에 ν•΄λ‹Ήν•œλ‹€.

  • DOM Element의 이벀트 ν•Έλ“€λŸ¬
    • 마우슀, ν‚€λ³΄λ“œ μž…λ ₯
    • νŽ˜μ΄μ§€ λ‘œλ”©
  • 타이머
    • 타이머 API
    • μ• λ‹ˆλ©”μ΄μ…˜ API
  • μ„œλ²„μ— μžμ› μš”μ²­ 및 응닡
    • fetch API
    • AJAX (XHR)

πŸ’‘ Node.jsλŠ” λΉ„λ™κΈ°μ μœΌλ‘œ μž‘λ™ν•˜λŠ” λŸ°νƒ€μž„μ— ν•΄λ‹Ήν•œλ‹€.

μ΄λŠ” 특히 μ›Ήμ—μ„œ μœ μš©ν•œλ°,

  • λ°±κ·ΈλΌμš΄λ“œ μ‹€ν–‰, λ‘œλ”© μ°½ λ“±μ˜ μž‘μ—…
  • μΈν„°λ„·μ—μ„œ μ„œλ²„λ‘œ μš”μ²­μ„ 보내고, 응닡을 κΈ°λ‹€λ¦¬λŠ” μž‘μ—…
  • 큰 μš©λŸ‰μ˜ νŒŒμΌμ„ λ‘œλ”©ν•˜λŠ” μž‘μ—…

같은 μƒν™©μ—μ„œ νŠΉνžˆλ‚˜ μœ μš©ν•˜λ‹€.


비동기 μž‘λ™ 방식

비동기 ν•¨μˆ˜ 전달 νŒ¨ν„΄μ—λŠ” 두 가지 방식이 μžˆλ‹€.
callback νŒ¨ν„΄κ³Ό 이벀트 등둝 νŒ¨ν„΄

1. callback νŒ¨ν„΄

ν•¨μˆ˜μ˜ parameter둜 콜백 ν•¨μˆ˜λ₯Ό λ„˜κ²¨μ€€λ‹€λ©΄, 비동기 taskλ₯Ό μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜μ˜ μˆœμ„œλ₯Ό μ§€μΌœλ‚˜κ°ˆ 수 μžˆλ‹€.

예제

const printString = (string,callback) => {
  setTimeout(
    () => {
      console.log(string)
      callback()
    },
    Math.floor(Math.random() * 100)+1
  )
}
    
const printAll = () => {
    printString("A", () => {
      printString("B", () => {
        printString("C", () => {} )
      })
    })
  }
  printAll()

ν•¨μˆ˜ μž…μž₯μ—μ„œ 콜백 ν•¨μˆ˜λ₯Ό ν•„μš”μ— 따라 μ¦‰μ‹œ μ‹€ν–‰ν•  수 μžˆκ±°λ‚˜, λ‚˜μ€‘μ— μ‹€ν–‰ν•  μˆ˜λ„ μžˆλ‹€.

2. 이벀트 등둝 νŒ¨ν„΄


[ Promise μ΄μ–΄μ„œ ]
https://velog.io/@bommy5799/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Promise

profile
기둝을 μ •λ¦¬ν•˜λŠ” 곡간!

0개의 λŒ“κΈ€