inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn đầy đủ về lập trình không đồng bộ JavaScript - Promise, chờ đợi, không đồng bộ

Về đối tượng Promise

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

482

gibbs

7 câu hỏi đã được viết

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

Câu trả lời 2

2

drajin

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

gibbs

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

0

drajin

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

프론트엔드 학습 수준 문의

0

21

2

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

0

38

2

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

0

51

2

lucide react 아이콘 설치

0

35

2

17강 zustand store 서버에서 생성

1

30

1

문의관련 문의

0

36

2

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

0

46

2

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

0

41

2

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

34

1

ai 도구 질문

0

27

1

저는 왜 콘솔에서 props가 한 줄만 찍히나요?

0

43

1

렌더링 차단 리소스 javascript 실행에 관련해서 질문 있습니다.

0

43

2

데이터 로딩중 화면만 계속 나와요!!

0

48

2

퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요

0

74

2

깃 이메일이랑 비번이 필요하다고 하네요

0

29

1

02-04 layout.tsx 구조가 달라요

0

53

2

불변성을 지키며 수정 삭제를 할때도 Map이 유리한가요?

0

48

1

개인 프로젝트로 앱 개발해서 다운로드 1300 달성했는데 어느 정도 의미가 있을까요? (안드로이드 개발자)

0

65

1

22강 강의 영상 문의 드립니다.

0

46

2

20강 마무리작업에서

0

35

2

아래 위치에 동영상이 보이지 않습니다.

0

51

1

Vercel 사용법

0

71

2

강의자료가 않보입니다.

0

49

1

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

0

365

2