지금까지는 Promise 객체 fulfilled 상태인 경우만 생각했는데요. 사실 하나의 Promise 객체가 가질수 있는 상태는 총 3가지가 있다고 했습니다.
아직 작업중인 상태를 나타내는 pending 상태 작업이 성공적으로 완료 되었음을 나타내는 fulfilled 상태 작업이 실패 되었음을 나타내는 rejected 상태 이렇게 3가지 라고 했는데요.
이 중에서 fulfilled 상태는 작업 성공 결과를 갖게 되고, rejected 상태는 작업 실패 정보를 갖게 됩니다.
여기서 첫번째 then메소드를 보면 이때까지와 달리 총 두개의 콜백이 들어가 있습니다.
일단 첫번째 콜백은 우리가 이때까지 배웠던것 처럼 Promise 객체가 fulfilled 상태가 될때 실행할 콜백입니다.
그리고 Promise 객체가 rejected 상태가 될때 실행할 콜백입니다.
만약 Promise 객체가 rejected 상태가 되을때 실행할 콜백을 설정하고 싶다면 then메소드에 2번째 파라미터로 원하는 콜백을 넣어주면 됩니다.
🤟여기서 또 한가지 중요한 사실
1번째 콜백은 Promise 객체가 fulfilled상태가 될때 실행 되기 때문에 그 파라미터로 Promise 객체의 작업성공 결과 가 넘어오지만
2번째 콜백은 Promise 객체가 rejected상태가 될때 실행 되기 때문에 그 파라미터로 작업 실패정보가 넘어옵니다.
인터넷을 끊어서 일부러 에러를 내어봤습니다. 그리고 코드를 콘솔창에서 실행해보면 다음과 같이 에러 메세지가 나옵니다. 지금 보면 에러객체를 그대로 출력한 결과가 보입니다. TypeError 라는 에러 객체가 fetch함수가 리턴했던 Promise 객체의 작업 실패 정보로 설정 되었다는 것을 알수 있습니다.
자 이번 살펴본것 처럼 Promise 객체가 rejected 상태가 되면 실행하고 싶은 콜백은 then메소드의 2번째 파라미터로 넣으면 됩니다. 그리고 Promise 객체가 정말 rejected 상태가 되면 해당 콜백에는 작업 실패 정보가 파라미터로 넘어온다는 사실을 꼭 기억하세요.!!