Promise
- Promise는 비동기 동작을 처리하기 위해 ES6에 도입되었다. (처음엔 혁명 느낌)
- Promise는 클래스다.
- Promise 클래스를 인스턴스화 해서 promise 객체를 만든다.
- 반환된 promise로 원하는 비동기 동작을 처리한다.
- Promise는 일단
state
와 resolve
, reject
함수를 이해하면 된다.
Promise 구현하기
let promise = new Promise(function(resolve, reject) {
});
- resolve는 비동기 로직이 성공했을 때 실행할 함수
- reject는 비동기 로직이 실패했을 때 실행할 함수
resolve 이해하기
let promise = new Promise(function(resolve, reject) {
});
promise.then(function() {
});
예제
let promise = new Promise(function(**resolve**, reject) {
setTimeout(function() {
**resolve('hello world');**
}, 2000);
});
promise.then(**function(msg) {
console.log(msg);
}**);
reject 이해하기
let promise = new Promise(function(resolve, **reject**) {
});
promise.then(function() {}, **function() {}**);
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
**reject('으악!');**
}, 2000);
});
promise.then(function() {
console.log('resolve');
}, **function(msg) {
console.log('reject', msg);
}**);
주의
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(1);
resolve(2);
}, 1000);
});
promise.then(function(msg) {
console.log(msg);
});
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
reject(1);
resolve(2);
resolve(3);
}, 1000);
});
promise.then(function(msg) {
console.log('resolve', msg);
}, function(msg) {
console.log('reject', msg);
});
🐔출처
위코드