비동기 ⇒ Promise, async, await
동기 vs 비동기
- 동기 ⇒ 동시에 여러 작업을 수행할 수 없음, 흐름을 예측하기 쉽다. 먼저 수행되고 나중에 수행되는 것들이 명확하다.
- 비동기 ⇒ 동시에 여러 작업을 수행할 수 있음, 흐름을 예측하기 어려움
Promise
- 비동기 작업의 단위
- resolve와 reject는 또다른 함수로서
resolve
는비동기 작업이 성공
했을 경우,reject
는비동기 작업이 실패
했을 경우
then
메소드는 해당Promise
가 성공했을 때의 동작(인자로 함수)
catch
메소드는 실패했을 경우(인자로 함수)
async
Promise
와 밀접한 연관을 가지고 있음
async
의 return 값은Promise
await
⇒ async 함수 안에서만 사용 가능, Promise가 완료될 때 까지 기다림
- await [[Promist 객체]]
비동기의 특징
- 실제 작업과 그 작업의 후속조치를 따로 분리(then, catch)
- async, await를 통해 하나의 흐름속에서 코딩 가능
- 실제 작업이 끝난 다음 후속 조치를 하는 것이 아니라 실제 작업이 끝나길
기다린 다음
다음 코드를 수행 ⇒ 동기 코드 처럼 사용할 수 있게 함