Promise and async/await

c4fiber·2023년 11월 3일
0

Programming Language

목록 보기
1/3

promise, async/await


async/await는 ES8에서 도입된 문법으로 promise를 더욱 쉽게 사용할 수 있도록 해준다.

promise의 경우 chaining을 통해 .then().then().then() 이렇게 각각의 시점에서 fullfilled 되었을 때 호출할 resolve를 체인처럼 연달아 지정해줄 수 있다.
하지만 이렇게 여러개의 promise를 연달아 지정해주면 가독성이 나빠지고 프로그램의 흐름을 추적하기 어렵다.

이를 위해서 async, await 구문을 추가하였다.
await 문을 사용하면, 해당 promise가 fullfilled or rejected 될 때 까지 기다렸다가 다음 코드를 실행하는 방식으로 흐름을 어느정도 제어할 수 있게 된다.

현재 사용하는 바로는 promise chaining이 한 두개 정도면 기존 방식을 사용해도 문제는 없어보이고(db query 후 결과 전달)
여러가지 작업을 많이 하는 경우에는 (deep class) 사용해볼만하다고 생각한다.

promise.any vs promise.race


any: 여러 promise 중에 하나라도 fulfilled 되면 resolve를 호출한다.
race: 처음으로 실행완료된 promise의 결과에 따라 resolve or reject를 호출한다.

any의 경우 첫번째 promise가 실패해도, 두번째 promise가 fulfilled 되면 resolve한다.
하지만 race의 경우 첫번째 promise가 rejected 되는 순간 전체가 reject 된다.

profile
amazing idiot

0개의 댓글