State : 오퍼레이션을 수행중이면 pending -> 성공적으로 완료면 fulfilled or 문제가 생기면 rejected
promise는 클래스이기 때문에 new라는 키워드를 사용해 object 생성
Promise() 에 생성자로 executor라는 콜백함수를 전달하고 그 안에 두가지의 콜백함수를 받는다
resolve : 기능을 정상적으로 수행해서 마지막에 최종데이터를 전달하는 것
reject : 기능을 수행하다가 문제가 생기면 호출되는 것
promise안에서 해비한것(network, read files 등)을 한다 동기로 처리하면 통신하는 동안 다음 코드가 진행이안되어 promise로 처리
프로미스가 만들어지는 순간 바로 실행된다
새로운 프로미스가 만들어질때는 executor라는 콜백함수가 바로 실행이되기 때문에 조심하자(불필요한 통신이 일어날수도있음)
값이 정상적으로 수행된다면 값을 받아온다
value는 promise가 정상적으로 잘 수행이되어서 resolve콜백함수에서 전달된 ellie라는 값이 들어간다
reject사용 할때는 Error()라는 클래스를 쓴다
Error() 안에는 에러가 나타난 이유를 명확하게 작성해야된다.
이렇게 Uncaught라는 메세자가 뜨는데
then으로 성공적인 것만 작성해서 그렇다
.catch로 에러가 생겼을때 어떻게 처리할지 작성한다
프로미스에 then을 호출하면 똑같은 프로미스를 리턴하기 때문에 리턴된 프로미스에 다시 .catch를 호출할 수 있다. 이것을 체이닝이라고 부름
.finally는 성공,실패 상관없이 무조건 마지막에 호출되어지는 것
이런식으로 마지막에 호출됨