inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Promise 객체에 대해서

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

518

깁스

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

드라진

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

5,6,7,8 내용이 없어요

0

5

0

ThemeProvider를 이용해서 NextThemeProvider를 따로 생성하여 Layout.tsx에 적용하는 이유는 뭘까요?

0

8

1

mission 09-01 을 수행할 수 없어요

0

16

1

Context API vs Zustand 그리고 Auth

0

25

2

순수 함수 / 순수 컴포넌트

0

18

1

css box-sizing 관련 질문

0

31

2

스니펫이 이상해요

0

31

2

Editor Component의 최적화 불가능 이슈

0

37

2

useCallback ⊂ useMemo

0

34

2

깃허브 저장소를 어디에 첨부하셨나요?

1

38

1

nestjs 강의는 없나요??

1

39

2

스타터 저장소

1

41

1

What is Rxjs

0

29

1

라이브러리 설치 질문

0

33

2

linter 질문

0

40

2

수업자료 링크 접속했는데 404에러 뜹니다 ㅠ

1

45

1

리덕스 툴킷 맵다

0

32

1

11장 미션에 이메일 남기는걸 누락했어요.

0

40

1

primitive에 onClick 이벤트가 안되는 경우

0

32

3

감정일기장 vercel 배포 후 새로 고침 시 404페이지가 뜨는 이유

0

40

2

자료실

1

41

2

Sort 메서드 관련 아티클

0

43

2

4.1) React.js를 소개합니다 강의를 듣고 궁금한 점이 생겼습니다.

0

45

2

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

0

397

2