[Javascript]Promise객체와 비동기처리
1. Promise 객체의 정의
Promise객체란 비동기 작업이 멎아헐 성공/실패에 대한 결과값을 의미한다.
-MDN-
생성된 작업에 대한 상태정보를 하기 3가지 유형으로 가지고 있는 객체이다
1)pending (대기): fulfilled / rejected 둘다 아닌 초기상태
2)fulfilled (이행): 연산 완료
3)rejected (거부) : 연산 실패
2. 왜 필요한지
Promise
객체에 대해 찾아보면 비동기처리에 대해 먼저 확인하고 오라는 답변을 익숙하게 받았을 것이다. 이는 Promise
객체의 Chaining
이라는 강력한 기능때문이다.
1)비동기 처리란
-
CPU를 사용한 데이터 처리방식에 비해 하드디스크 읽쓰작업 & 네트워크를 통해 데이터 주고받는 작업(이하 'I/O작업'으로 통칭) 매우 느리다.
-
이에 I/O작업이 다 될때까지 기다리는 것이 아니라, 요청만 해두고 다른 작업을 먼저 하는 것을 비동기처리라고 한다.
2)그러면 Promise객체는 왜 필요한건지?
-
비동기 작업들의 상태(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
Author And Source
이 문제에 관하여([Javascript]Promise객체와 비동기처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gonkang_jeondosa/JavascriptPromise객체와-비동기처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)