Promise객체란 비동기 작업이 멎아헐 성공/실패에 대한 결과값을 의미한다.
-MDN-
생성된 작업에 대한 상태정보를 하기 3가지 유형으로 가지고 있는 객체이다
Promise
객체에 대해 찾아보면 비동기처리에 대해 먼저 확인하고 오라는 답변을 익숙하게 받았을 것이다. 이는 Promise
객체의 Chaining
이라는 강력한 기능때문이다.
CPU를 사용한 데이터 처리방식에 비해 하드디스크 읽쓰작업 & 네트워크를 통해 데이터 주고받는 작업(이하 'I/O작업'으로 통칭) 매우 느리다.
이에 I/O작업이 다 될때까지 기다리는 것이 아니라, 요청만 해두고 다른 작업을 먼저 하는 것을 비동기처리라고 한다.
비동기 작업들의 상태(pending/fulfulled/rejected)를 동기적으로 반환함으로써 필요한 동작을 실행할 수 있다.
Chaining
: 비동기 처리들을 순차적으로 처리할 수 있다.
fetch
와 then
의 사례를 들어 확인해보자 이 둘은 promise
객체를 리턴하는 함수이다.
fetch("주소")
.then((response) => response.text())
.then(result=> {
const users = JSON.parse(result);
return users[0];
});
fetch를 실행하면 HTTP Response를 받아온다.
이는 실제 JSON이 아니기떄문에, json()메서드를 사용해야한다.
이 떄, fetch작업이 fulfilled되고난 이후 비로소 .json()메서드가 실행되도록 해야하는데
이를 chaining
이라고 한다.
Promise : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise
fetch : https://developer.mozilla.org/en-US/docs/Web/API/fetch