트러블슈팅›DevOps•
1분
•

await를 걸어도 안 기다려지는 이유 — Promise return 누락

비동기 함수에서 `.then()` 체인을 쓸 때, `return`을 빼먹으면 `await`가 아무 의미 없는 코드가 됩니다. 실제로 겪은 사례로 정리합니다.

await를 걸어도 안 기다려지는 이유 — Promise return 누락

Before

function getComnCode() {
    NHApi.post("/api/cm/getComnCList", { comnCId: "EVT_STSC" })   // ⚠️ return 없음
        .then((res) => {
            ectStsc = [...res.comnCList];
        })
        .catch((error) => {});
}

After

function getComnCode() {
    return NHApi.post("/api/cm/getComnCList", { comnCId: "EVT_STSC" })
        .then((res) => {
            ectStsc = [...res.comnCList];
        })
        .catch((error) => {});
}

왜 이게 문제인가

  • JS 함수는 명시적으로 return하지 않으면 undefined를 반환합니다.
  • getComnCode()가 Promise를 반환하지 않으므로, 호출부의 await getComnCode()는 await undefined와 같아져 즉시 통과됩니다.
  • 내부 .then()은 백그라운드에서 계속 실행되지만, 호출부는 그걸 기다릴 방법이 없습니다.
  • await를 추가하는 것만으론 부족합니다. 애초에 return이 있어야 await가 의미를 가집니다.

댓글

(0)
await를 걸어도 안 기다려지는 이유 — Promise return 누락 | 강민석의 개발블로그