체이닝을 계속하면 코드가 난잡해지기 때문에 async, await을 사용
프로미스 체이닝을 간단하게 해준다.
before(promise)
after(async)
function앞에 async키워드를 쓰면 코드블럭이 자동으로 promise로 변환된다.
Async 가 붙어있는 function에서 쓸 수 있다
말 그대로 기대렸다가 실행하는것
위에서 사과, 바나나를 동시에 가져와보자!
이렇게 하면 콜백지옥처럼 될 수있다.
위에것을 await을 사용해보자!
await으로 멈추게한 다음에 마지막에 then을 붙혀 실행시킬수있다
위에 처럼하면 사과, 바나나 각각 1초로 딜레이를 주었기 때문에 총 2초가 걸려 비효율적이다.
그래서 각각 프로미스(프로미스는 만드는 순간 코드 블럭이 실행)를 만들어 병렬로 실행되게 하여 딜레이가 총 1초가 걸린다
에러 발생시키기
throw ‘error’ 로 에러를 발생시킬 수 있다
이렇게 에러가 발생하면 try, catch로 처리할 수 있다.
Promise.all() 프로미스 배열을 전달하게 되면 모든 프로미스들이 병렬적으로 다 받을때 까지 모아주는 역할
위에 처럼 사용할 수 있지만 실제로 사용할 떄는 밑에 처럼 all을 사용한다
all안에 있는[ ]안에 있는 것들이 다 받아지면 다음걸 실행하게 할 수 있다.
Promise.race 는 배열안에서 가장 먼저 리턴되는 것부터 받는것