[javascript] Promise

iinnuyh_s·2022년 10월 7일
0
  • Promise는 새로운 기능이라기보다 코드/함수 디자인 패턴임
var 프로미스 = new Promise(function(resolve,reject){
  	var result = 1+1;		//이 연산이 성공할 시,
	resolve(result);		//성공 판정 내림
  	//reject(result);		//실패 판정 내림
});
프로미스.then(function(result){
	//프로미스가 성공한 경우 실행할 코드
  console.log(result)
}).catch(function(){
	//프로미스가 실패할 경우 여기 코드 실행
  console.log(result)
});
  • 프로미스는 성공/실패를 판정하는 기계라고 생각하면 됨.

  • Promise가 콜백함수와 다른 점

    1) 콜백함수와는 다르게 순차적으로 뭔가를 실행할 때 코드가 옆으로 길어지지 않음.
    then 함수를 붙여서 순차적으로 실행하기 때문.
    2) 콜백함수는 불가능한 '실패시 특정 코드를 실행해주세요~' 라고 코드를 짤 수 있음. (catch)

  • Promise 특징

    1) Promise 오브젝트들에는 세가지 상태가 존재함

    <pending> : 성공/실패 판정 전
    <resolved> : 성공 후
    <rejected> : 실패 후
    (성공과 실패를 대기상태로 되돌릴 수는 없음)

    2)Promise는 동기를 비동기로 만들어주는 코드가 아님

    자바스크립트는 평상시에는 동기적으로 실행이 되며, 비동기 실행을 지원하는 특수한 함수들(setTimeout,addEventListener 등) 에 의해 비동기적 실행이 될 뿐.
    Promise 안에 오래걸리는 연산을 넣게 되면 비동기적 실행이 되는 것이 아닌, 10초 동안 브라우저가 멈추게 됨.

0개의 댓글