인프런 커뮤니티 질문&답변

eko09님의 프로필 이미지
eko09

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

프로미스와 제네릭

promise 관련 질문있습니다

작성

·

171

0

interface Post {
  id: number;
  title: string;
  content: string;
}
function fetchPost(): Promise<Post> {
  return new Promise((res, rej) => {
    setTimeout(() => {
      res({
        id: 1,
        title: "게시글 제목",
        content: "게시글 컨텐츠",
      });
    }, 1000);
  });
}
let data = {} as Post;
const postRequest = fetchPost()
postRequest.then((post)=> data = post  );

promise 에 ts적용하는 강의를 보다가 궁금한게 생겼는데 해당 코드와 같이 fetchPost에서 리턴값으로 id,title,content가 있는 object가 반환되는데 그 값을 미리 선언한 변수 data에 넣고싶은데 then에서 어떤식으로 작성해야 적용이될까요?? 위와 같이 data= post는 적용이 안되는거 같더라고요 ㅜㅜ

답변 1

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

질문 주신 방식으로 코드를 작성하셔도 then 메서드 내부에서는 data 변수에 post의 값이 저장됩니다.

그러나 then 메서드 외부에서도 이 결과값을 이용하시고 싶다면 다음과 같이 async/await을 이용하시면 좋습니다.

interface Post {
  id: number;
  title: string;
  content: string;
}
function fetchPost(): Promise<Post> {
  return new Promise((res, rej) => {
    setTimeout(() => {
      res({
        id: 1,
        title: "게시글 제목",
        content: "게시글 컨텐츠",
      });
    }, 1000);
  });
}

(async function () {
  let data = {} as Post;
  data = await fetchPost();
})();

 

eko09님의 프로필 이미지
eko09

작성한 질문수

질문하기