Promise의 문제점
프로미스도 중첩해서 쓰다보면 기존의 callback 지옥처럼 되는 경우가 있음.
이런 것 위에 async & await을 사용하면 동기식으로 순서대로 작성하는 것처럼 간편하게 작성할 수 있게 도와줌.
새로운 것이 추가된 것이 아니라, 기존에 존재하는 promise위에 조금 더 간편성을 더해서 좀 더 쉽게 쓸 수 있는 api를 제공한다. (
syntactic sugar
)
무조건 async&await을 쓰면 되나?
ㄴㄴ 프로미스가 맞는 상황도 있으므로 적절히 사용.
프로미스 → async&await 구문 변환
기존의 프로미스 구문

async&await 구문 변환 결과
- 함수 앞에
async
라는 키워드만 붙이면, 함수 블럭 안의 내용이 자동으로 프로미스로 변환됨.

await 예시
aynsc
로 감싸진 함수 내에서만await
키워드 사용 가능
- await 키워드를 쓰면 promise 코드가 끝날 때까지 기다려줌 (동기적으로 실행되는 것처럼 해줌)


동기처리 할 필요 없는 부분은?
- 아래 코드에서는 getApple()과 getBanana() 함수가 연관성이 전혀 없다.
- 즉 병렬로 처리해도 아무런 문제가 없는 함수인데 이렇게 짤 필요가 없음.
- return 하기 전에만 제대로 양쪽 값을 가지고 있으면 됨.
- 이런 경우에는 각각의 프로미스를 병렬처리하고 최종 값을 반환받는
promise.all

병렬처리 시킴 (2초 걸리던 거, 1초만에 해결됨)

promise.all
promise.all
에 프로미스 배열을 전달하면, 프로미스가 다 반환되어진 뒤 그 결과를 다시 배열로 반환함.
promise.race
프로미스 배열로 보내면, 가장 먼저 반환받은 하나를 반환함.
