Promise 클래스에서 제공하는 5가지 정적 메서드
ex) 복수의 URL 동시 요청, 결과를 모두 받아서 최종 처리
// let p = Primise.all([...promises...]);
// 가장 늦게 처리되는 프라미스가 이행되기까지 3초가 걸리므로, 결과적으로 3초후 then 핸들러
가 실행됨
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
])
// 프라미스 전체가 처리되면 결괏값이 담긴 배열([1, 2, 3])이 반환됨
.then(alert);
응답이 성공할 경우 - { status: "fulfilled", value: result }
에러가 발생한 경우 - { status: "rejected", reason: error }
Promise.race([
new Promise((resolve, reject) => setTimeout(() => resolve(1), 1000)),
new Promise((resolve, reject) => setTimeout(() => reject(new Error("에러 발생!")), 2000)),
new Promise((resolve, reject) => setTimeout(() => resolve(3), 3000))
])
// 첫 번째로 전달한 프라미스 객체가 제일 빨리 이행되므로 결괏값이 출력됨
.then(alert)
// Q) 두 번째 프라미스가 먼저 실패하도록 시간을 수정해보고 결과 생각해보기 => 두 번째 프로미스 시간을 0으로 바꾸고 결과는 에러발생!!
.catch(alert);
let promise = new Promise(resolve => resolve(value));
let promise = new Promise((resolve, reject) => reject(error));
응답이 성공할 경우 - { status: "fulfilled", value: result }
에러가 발생한 경우 - { status: "rejected", reason: error }
let p = new Promise(resolve = > resolve(value));
let p = new Promise(reject => reject(error));