inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async

Promise 객체에 대해서

Promise 객체 강의 7분 27초 부분 질문입니다.

486

깁스

작성한 질문수 7

1

const p = add(1,2);

console.log(p); //Promise { <pending> }

const t = p.then(....).catch(....).finally(...)

이 때 총 4개의 각각 다른 프라미스가 생성된 상태라고 이해했습니다.

1) p - 프라미스 P1 (add 에서 리턴한 프라미스)
2) p.then - 프라미스 P2 (P1.then 에서 리턴한 프라미스)
3) p.then().catch() - 프라미스 P3 (P2.catch 에서 리턴한 프라미스)
4) p.then().catch.().finally() - 프라미스 P4 (P3.finally 에서 리턴한 프라미스)

결과는 아래처럼 되는거라고 생각했구요.


P1가 리졸브(3) 이므로 then 실행했고 3 출력, 리턴이 없으므로 리졸브-언디파인드
P2는 fulfilled(리졸브-언디파인드) 이므로 catch 실행했고 에러가 아니므로 리졸브-언디파인드
P3는 fulfilled(리졸브-언디파인드) / rejected 이므로 finally 실행했고 'finally' 출력, 리턴이 없으므로 리졸브-언디파인드

P4는 함수반환과 관계없이 P3와 동일한 상태임. fulfilled(리졸브-언디파인드) 인데 등록된 콜백이 없으므로 이대로 끝.


그런데 강의에서 설명하실 때는 P1 프라미스에

then, catch, finally 함수로 콜백을 등록한 것처럼 느껴져서요.

제가 이해한 내용이 맞는지 궁금합니다.

 

 

 

 

 

javascript node.js async-await promise

답변 2

2

드라진

then, catch, finally 함수는 callback 함수입니다.

즉, p.then() 함수는 fulfilled 또는 rejected 상태가 되면 callback을 호출하고

결과 Promise를 반환합니다.

callback 함수의 반환 값이 없으면, Promise(undefined)를 반환하게 됩니다.

 

그러므로, p.then().catch()는 Promise(undefined).catch()가 되고,

fulfilled 상태이므로 error 상황이 아니어서 그대로 Promise(undefined)가 반환됩니다.

p.then().catch().finally()에서도 Promise(undefined).finally()가 실행되고,

여기서 undefined 가 출력됩니다.

 

이해하신 내용이 맞는 것 같습니다.^^

 

0

깁스

감사합니다. 오늘 영상을 다시 보면서 알려주신 내용과 비교해보니 이제야 강의와 답변을 모두 이해한 것 같습니다.

0

드라진

정확하게 알려고 노력하는 모습이 좋습니다. 계속 노력하시면 경쟁력 있는 소프트웨어 개발자가 될 것입니다.

백오피스를 개발할 때 아키텍처 구성에 대한 질문

0

10

1

ai가 만든 강의인가요?

0

20

1

VSCode 설정 문의

0

21

2

PPT 코드 관련 질문

0

19

2

state 객체로 묶기

0

23

1

수파베이스 ORM 질문

0

31

2

몽고 db 접속 오류

0

20

1

트리거 질문

0

28

1

3강 질문

0

46

2

74. 데이터 캐시 - 1 (이론) 강의 영상 누락

0

37

1

2강 nodejs 3단계 설명 질문

0

50

1

imagesLoaded에 관한 질문

0

22

2

useEffect와 lifecycle문의

0

38

2

프론트엔드 학습 수준 문의

0

51

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

55

2

최근 코테, 과제 테스트 트렌드

0

87

2

lucide react 아이콘 설치

0

50

2

17강 zustand store 서버에서 생성

1

50

1

문의관련 문의

0

55

2

next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?

0

68

2

76. 전문성 더하기: 놓치면 아쉬운 관련 기술들 수업 자료가 없어요.

0

53

2

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

40

1

ai 도구 질문

0

39

1

안녕하세요. await async 강의 7분31초 부분에서 질문입니다. 7분 31초 부분에서 질문있습니다.

0

367

2