[JavaScript] Asynchronous - Promise static methods
Promise class static methods
- Promise.all
- Promise.allSetteled
- Prormise.race
- Promise.any
- Promise.resolve
- Promise.reject
Promise class static methods
Promise.all
Most used in practice
Promise.all([promise1, promise2, ...])
배열의 모든 promise 객체에 대하여 promise 가 setteled 될 때까지 기다림. reject 된 Promise 가 존재할 경우, 멈추고 에러만 리턴함. Resolved 된 Promise 는 무시됨.
예1) 여러 URL 에서 데이터를 가져온 후 한번에 작업하고자 할 때.
Promise.all([
new Promise((resolve)=> setTimeout(()=> resolve(1), 3000)),
new Promise((resolve)=> setTimeout(()=> resolve(2), 2000)),
new Promise((resolve)=> setTimeout(()=> resolve(3), 1000))
]).then(console.log);
// 모든 Promise 가 resolved 된 3 초 후에 [1, 2, 3] 이 출력된다.
예2) 통신해야 하는 URL 이 많을 경우:
let urls = [
'https://api.github.com/users/iliakan',
'https://api.github.com/users/remy',
'https://api.github.com/users/jeresig'
]
// 보통 map 을 써서 배열의 요소들을 Promise 객체로 만든 다음 Promise.all 을 사용한다.
let requests = urls.map(url => fetch(url));
Promise.all(requests)
.then(responses => {
return Promise.all(responses.map(response => response.json()));
})
.then(users => users.forEach(user => console.log(user.name)));
Promise.allSettled
모든 Promise 가 settled 된 결과를 리턴함. Error 리턴하는 Promise 도 함께 return 함.
Promise.race
제일 빨리 setteled 되는 하나의 Promise 를 return 한다. 나머지는 무시된다. Promise 들의 race(경주) 다.
Promise.any
제일 빨리 resolved 되는 하나의 Promise 를 return 한다. 나머지는 무시된다. 만약 모든 Promise 가 rejected 될 경우 AggregateError
객체를 return 한다. (a special error object that stores all promise errors in its errors property.)
aggregate - 합쳐진, 종합된 ([종합하다, 합치다], [종합])
Promise.resolve/reject
Rarely needed in modern code, because of async/awiat syntax.
Promise.resolve is almost never used.
// 아래의 두 코드는 같다.
let promise = new Promise.resolve('a');
let promise = new Promise(resolve => resolve('a'));
// Promise의 resolve 가 확실시 될 경우에 사용한다.
Advanced
Error handling with Promises
https://javascript.info/promise-error-handling
Promisification
https://javascript.info/promisify
Microtask queue
https://javascript.info/microtask-queue
Author And Source
이 문제에 관하여([JavaScript] Asynchronous - Promise static methods), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhoryong/JavaScript-Asynchronous-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)