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초 동안 브라우저가 멈추게 됨.