노드(Node.js) 백엔드에서 API를 세 군데 호출해서 데이터를 합치는 코드를 짰는데요. 로컬에서 돌려보니까 응답이 너무 느려서 원인을 찾다가 여기 오게 됐습니다.
지금 코드가 이렇게 생겼어요.
const a = await getUser();
const b = await getPosts();
const c = await getComments();
return { a, b, c };
각 호출이 1초씩 걸리면 이게 합쳐서 3초가 나오더라고요. 근데 이 세 개는 서로 결과가 필요 없는, 그냥 독립적인 호출이거든요. 찾아보니까 Promise.all 이라는 걸로 이렇게 바꾸면 된다는데,
const [a, b, c] = await Promise.all([
getUser(), getPosts(), getComments()
]);
이렇게 하니까 진짜로 1초대로 줄었어요. 근데 왜 이렇게 차이가 나는 건지 원리를 정확히 모르겠어요. await를 여러 번 쓰면 순차로 기다리는 거고 Promise.all은 동시에 던지는 개념인 건가요? 그리고 앞 결과가 뒤 호출에 필요할 땐 그냥 순차 await를 써야 하는 거 맞나요? 이 둘을 언제 뭘 써야 하는지 판단 기준이 궁금합니다.