inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Promise 객체에 대해서

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

499

깁스

작성한 질문수 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

드라진

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

섹션2번 부분 강의 화면이 잘 못된것 같아서 문의합니다.

0

8

1

call stack 표현이 잘못표현된것이 아닌가요?

0

24

2

전자책으로 구매인증 가능할까요?

0

51

1

React 와 Virtual DOM 의 이야기 영상 실행이 안됩니다.

0

32

1

4주차 미션 게시판이 안보여요~

0

43

2

일반 강의와 차이점?

1

37

1

!= 연산자의 역할

0

32

1

중요하진 않지만 설명하신부분에서 안된부분..

0

30

0

강의 듣는 순서가 어떻게 되나요?

0

46

1

stopPropagation()에 대해서 질문 있습니다.

0

48

2

12.13) 하단 여백 스타일링 관련 질문 드립니다.

0

61

2

27강 Context내 RSC 사용 관련 문의

0

73

3

혹시 다음 강의 제작 예정된 것들이 있을까요?

0

71

1

Enable Linting 항목을 찾을수가 없습니다.

0

43

2

에러 질문드립니다

0

60

2

1강 질문

0

62

2

책에 있는 프롬프트 관련 질문입니다.

0

42

2

윈도우에서는동작줄이기가어디에있을까요??

0

32

1

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

0

50

3

ai가 만든 강의인가요?

0

120

1

VSCode 설정 문의

0

66

2

PPT 코드 관련 질문

0

46

2

state 객체로 묶기

0

46

1

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

0

383

2