[02/24]

송승찬·2020년 2월 25일
0

CodeSquad_TIL

목록 보기
2/14

promise

promise => 비동기 코드를 동기적인 코드처럼 실행 가능하다.
promise is object,비동기 작업의 결과를 반환하는 객체.promise객체는 pending,fullfilled(resolve),reject의 3가지 상태를 가짐
executor를 매개변수로 받고 이 excutor는 resolve,reject함수를 매개변수로 받는 함수.
비동기 작업이 끝나고 결과에 따라 resolve,reject실행 => resolve/reject에 전달 된 값이 .then의 successHandler/failHandler의 인자로 전달됨
promise객체의 실행은 무엇을 반환하나? Promise반환 =>.then으로 체이닝 사용가능
##promise객체 생성시 안에 있는 콜백 자동으로 실행한다.

.then(successHandler, failHandler) =>then실행시 Promise를 리턴, 그렇기에 프라미스 체이닝 슬 수 있다.이 핸들러들은 ##비동기적으로 실행된다.
then의 successHandler의 return값이 그 다음 .then의 successHandler의 인자로 전달됨

catch 메소드는 에러를 처리한다는 점에서 then 메소드의 두 번째 콜백 함수와 유사하지만 미묘한 차이가 있다.
then 메소드의 두 번째 콜백 함수는 비동기 처리에서 발생한 에러(reject 함수가 호출된 상태)만을 캐치한다. 하지만 catch 메소드는 비동기 처리에서 발생한 에러(reject 함수가 호출된 상태)뿐만 아니라 then 메소드 내부에서 발생한 에러도 캐치한다.
따라서 에러 처리는 catch 메소드를 사용하는 편이 보다 효율적이다.

let p1 = Promise.resolve('foo') =>promise반환

let p2 = new Promise((resolve,reject)=>{
resolve('Seoul');
})

p1.then((data)=>{
console.log(data);
}) // foo

p2.then((data)=>{
console.log(${data} from new)
}) // Seoul from new

profile
superfly

0개의 댓글