본문 바로가기
JS

비동기 함수가 예상한 값 대신에 Promise { <pending> }을 반환하는 이유

by limew 2024. 2. 19.

만약 비동기 함수가 예상한 값 대신에 Promise { <pending> }을 반환한다면, 이는 해당 프로미스가 아직 처리되지 않았음을 의미합니다. 이러한 상황은 주로 비동기 작업을 제대로 처리하지 않았을 때 발생하는데

비동기 함수가 보류 중인 프로미스를 반환하는 일반적인 이유는 다음과 같습니다

 

1. await 키워드의 누락한 경우

 async 함수를 사용할 때 프로미스와 함께 await 키워드를 사용하여 프로미스가 처리될 때까지 기다려야 합니다. await 없이 함수를 호출하면 즉시 보류 중인 프로미스가 반환됩니다.

 

async function myAsyncFunction() {
  const result = await someAsyncOperation();
  return result;
}

 

 

 

2. 프로미스를 반환하지 않은 경우

비동기 함수에서 프로미스를 반환하지 않으면 작업이 완료될 때까지를 알 수 없으므로 보류 중인 프로미스가 반환됩니다.

async function myAsyncFunction() {
  someAsyncOperation(); // 프로미스 반환 X
}

 

이러한 문제들을 해결하고 프로미스를 제대로 처리하면 비동기 함수가 원하는 값 대신 보류 중인 프로미스를 반환하는 문제를 해결할 수 있습니다

 

 

참고

https://stackoverflow.com/questions/38884522/why-is-my-asynchronous-function-returning-promise-pending-instead-of-a-val.