Programming/javascript
[Promise] 비동기 처리
고양이의시간
2020. 6. 18. 23:08
Promise
비동기 처리를 도와주는 javascript 오브젝트. 콜백지옥 탈출을 도와준다.
RxSwift 의 Stream 처럼, 값의 흐름을 제어가 가능
State
상태. 프로세스가 성공했는지, 실패했는지
pending(수행중) -------> fulfilled(성공적으로 오퍼레이션 끝냄) / rejeacted(네트워크에 문제가 생김)
프로듀서
정보제공
// 프로듀서
const promise = new Promise((resolve, reject) => {
// 비동기 처리 : 네트워크 처리, 파일읽기등 시간이 걸리는 작업
console.log("resolve running....");
setTimeout(() => {
// resolve('success'); // 성공적으로 처리 완료시, resolve 콜백함수를 전달
reject(new Error("no network")); // 실패시, reject 함수 전달
}, 2000);
});
소비자
정보소비
/**
* 2.Consumers : then , catch, finally
* promise 가 정상적으로 수행이 되고난 후, resolve 콜백함수로 전달한 값을 가져올 수 있다
*/
promise
.then(value => {
// promise 수행이 성공했을때
// 값 or promise전달 가능
console.log(value);
})
.catch(error => {
// promise 에서 실패했을때, 에러메시지 출력
console.log(error);
})
.finally(() => {
// 성공, 실패 모두 들어옴
console.log("finally");
});