const promise = new Promise((resolve, reject) => {
if(성공) {
resolve('성공');
} else {
reject('실패');
}
})
Promise는 비동기적으로 실행되기 때문에 현재 상태를 확인할 수 있는 정보를 가지고 있다.
Promise는 후속 처리 메소드를 통해 처리 결과를 별도로 이어받아 처리할 수 있다.
promise(wrongThing)
.then(res => console.log(res), err => console.error(err));
promise(wrongThing)
.then(res => console.log(res))
.then(undefined, err => console.error(err));
promise(wrongThing)
.then(res => console.log(res))
.then(res => console.log(res))
.then(res => console.log(res))
.catch(err => console.error(err));
promise(wrongThing)
.then(res => console.log(res))
.then(res => console.log(res))
.then(res => console.log(res))
.catch(err => console.error(err));
const resolve = Promise.resolve('성공');
resolve.then(console.log); // '성공'
const resolve = new Promise(resolve => resolve('성공'));
resolve.then(console.log); // '성공'
const resolve = Promise.reject('실패');
resolve.catch(console.log); // '실패'
const resolve = new Promise((resolve, reject) => reject('실패'));
resolve.catch(console.log); // '실패'
Promise.all은 다수의 Promise를 처리할 때 사용한다. Promise들이 담긴 배열 등으로 넘겨 받아 병렬로 처리한다
Promise.all([
new Promise(resolve => setTimeout(() => resolve(1), 3000)), // 1
new Promise(resolve => setTimeout(() => resolve(2), 2000)), // 2
new Promise(resolve => setTimeout(() => resolve(3), 1000)) // 3
]).then(console.log) // [ 1, 2, 3 ]
.catch(console.log);
Promise.all([
new Promise((resolve, reject) => setTimeout(() => reject(new Error('Error 1!')), 3000)),
new Promise((resolve, reject) => setTimeout(() => reject(new Error('Error 2!')), 2000)),
new Promise((resolve, reject) => setTimeout(() => reject(new Error('Error 3!')), 1000))
]).then(console.log)
.catch(console.log); // Error: Error 3!
Promise.race([
new Promise(resolve => setTimeout(() => resolve(1), 3000)), // 1
new Promise(resolve => setTimeout(() => resolve(2), 2000)), // 2
new Promise(resolve => setTimeout(() => resolve(3), 1000)) // 3
]).then(console.log) // 3
.catch(console.log);