먼저 상황부터 설명하자면
글수정을 예로들어서
특정글을 수정을했고 완료를하면 수정한걸 저장하고 다시 받아와서 리스폰스 한다고 치자
그러면
db.modify(...)
db.get(...)
으로 표현가능할껀데
수정이 완료된걸 받으려면 위의 수정이 끝날때까지 기다려야 할꺼임
await db.modify(...)
await db.get(...)
이렇게 둘다 db처리가 완료될때까지 기다릴때
await을 쓰는데 js 팁으로 await 남발하지 말라고 하더라고
뭔가를 여러개 처리해야할땐 promise.all 쓰라했는데
아래 상황보자 각각의 프로세스가 완료되는데 1초씩 걸린다하면
await process1() //1
await process2() //2
await process3() //3초까지 지나야 아래구문 실행
console.log('done')
done이 출력되기까지 총 3초나 걸린다
근데 이걸 all로 묶어서 한번에 실행시키면
await Promise.all([
process1(),
process2(), //3개 동시에 실행하고
process3(), //done은 1초후에 출력
])
console.log('done')
응답하는 시간 단축시킬수 있다
근데 잡소리는 여기까지하고
위상황처럼 첫번째 프로세스가 완료가된 다음에 아래꺼를 실행해야한다면
상식적으로 await으로 기다리는게 맞음
근데 프로미스랑 reduce랑 섞어서 순서가 보장되게 실행하는 방법이 있다 하더라고
이런식으로 할수있다는데 코드보니까
결국은 then으로 끝나면 실행하는건까
다시 첫번째 예시상황으로 돌아가서
await db.modify()
await db.get()
이랑 차이 없는거 맞지?
순차 실행을 해야 한다면 프로미스 체이닝, 순차 await으로 하는게 당연히 맞고 둘이 동작도 똑같음
await 그냥 써 저게 남발하는 건 아니잖아
그냥 읽기 쉬운거로 써라
시킬게 많을때 간단해지고 쓸만한거지, modify, get만 할건데 저렇게까지 하는건 괜히 더 길어지는거 같음