Promise(async, await) 정리

bella·2022년 2월 13일
0

javascript는 기본적으로 동기언어라서 작업이 순차적으로 진행된다.

어떤 동작이 언제 끝날지 모를때(주로 데이터 통신할 때) 순차적으로 진행된다면 해당작업이 완료될때까지 기다려야하고, 이런 상황은 서버 로딩시간이 길어질 수 있는 비효율적인 방법이다. 이러한 상황에서 병렬적으로 작업을 진행할 수 있도록 비동기작업(Promise)이 필요하다.


📍 Promise의 3가지 상태

pending -> fulfilled or rejected

📍 Promise 만들기

new Promise(resolve, reject){}
✔ promise를 만드는 순간 executer(resolve, reject)가 바로 실행이 된다. (요청이 있을 때만 동작하고 싶을때 주의)
✔ Promise는 암묵적으로 Promise를 반환한다.

📍 Promise 사용하기

then: 작업이 완료됐을 때
catch: 오류가 발생했을 때
finally: 마지막에 항상 실행

.then(same => console.log(same)) === .then(console.log)
✔ 받아오는 인자와 콜백함수의 파라미터로 보내는 인자가 같을경우 생략가능하다

📍 async, await

✔ Promise를 더 깔끔하고 간단하게 사용할 수 있는 방법
✔ 함수에 async를 붙여주면 자동으로 함수 내부의 코드블럭들을 promise로 바꿔준다
✔ await는 async를 붙여준 함수 내부에서만 사용가능, await를 붙여주면 해당 작업이 완료된 후에 다른 작업 진행
✔ try, catch를 이용해 오류 제어

📍 Promise all & race

✔ 서로 관련없는 다양한 작업일 때 이용, 병렬적으로 진행
Promise.all([promise1(),promise2()]).then() : 모든 작업이 완료된 이후 작업 진행
Promise.race([promise1(),promise2()]).then() : 가장 먼저 작업이 완료된 결과값으로 이후 작업 진행

profile
기록하며 공부하기

0개의 댓글