본문 바로가기

JavaScript

promise

프로미스
자바스크립트 비동기 처리에 사용되는 객체​

콜백에 콜백 계속 연속으로 쓰면
=> 가독성이 안좋아짐
=> 유지보수가 안좋음
수정, 새로운것 추가도 힘듦

식이 끝날때까지 기다려야 함

프로미스
주도권을 어느정도 가져옴

프로미스 => 객체 만드는것
비동기 흐름을 관리해주는 객체를 만드는것

장점
비동기 흐름에서 콜백을 넘겨주고 기다리는 형태 =>
프로미스 객체 만듬으로써 리턴, 매개 변수 넘기기, 추가 기능 넣기 등등 가능
에러 핸들링도 잘해줌

자바스크립트 네이티브 try, catch와 비슷하게 처리할 수 있게 됨
// 비동기는 못썻음
// 어쩔 수 없이 콜백으로 넘겨줫음

프로미스 인자 => 함수 1개
함수의 인자로 => resolve (성공), reject (실패)

then => 인자로 성공함수, 실패함수
그러면
리턴해주는것 : 프로미스의 인스턴스
// 결과 값도 프로미스
=> 체이닝 가능
// then().then() .....
then 순차적으로 실행

- 에러처리 방법
1. then의 두번째 인자
2. catch
에러처리는 가급적 catch 사용
//then에서 throw new Error 같은 경우 에러를 못잡음

catch => 인자로 함수 1개
에러핸들링
에러 나면 실행 됨
// try catch와 유사
// 에러처리 간단해짐

promise => 비동기작업
resolve => then 실행
reject => catch 실행
// then에서 에러시 catch가 실행함

여러가지 동작 후 작업이 모두 끝나고 실행할때
promise.all => 인자로 배열
// promise instance들이 담긴 배열
배열 모두 실행이 끝난 후에 then 실행

프로미스는 객체이니 map, reduce 사용 등등 확장이 가능해짐
내 상황에 맞게 변형 가능

spread => promise.all 에서 배열로 결과 받고싶지 않을때
// promise.all 사용시 배열 요소에 값 실행한 배열로 받음

'JavaScript' 카테고리의 다른 글

메소드 함수란 ?  (0) 2020.01.29
stable , unstable, ​inplace  (0) 2020.01.22
Asynchronous, Higher Order Function, Event Loop  (0) 2020.01.12
OOP, Encapsulation, Abstraction, factory function, Inheritance  (0) 2020.01.08
ES2015 , ES6  (0) 2019.11.18