묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
Promise 객체 강의 7분 27초 부분 질문입니다.
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 비동기 프로그래밍 완벽 가이드 - Promise, await, async
안녕하세요. await async 강의 7분31초 부분에서 질문입니다. 7분 31초 부분에서 질문있습니다.
안녕하세요. const p = add(1,2);console.log(p); 여기서 Promise { <pending> } 이 출력되는데요.add 함수 내부에서 await setTimeout 호출되면 add 함수는 더 진행되지 않는다고 하셨습니다. 그럼 return 도 못한건데 왜 p 에 값이 Promise 가 들어왔는지 궁금합니다..