자바스크립트 - promise 2
Promise.resolve()
Promise.resolve( /*value*/ );
Promise.resolve(new Promise((resolve, reject) => {
setTimeout(() => {
resolve('foo');
}, 1000);
})).then((data) => {
console.log(
'프로미스 객체인 경우, resolve 된 결과를 받아서 then이 실행된다.',
data,
)
});
Promise.resolve('bar').then(data => {
console.log('then 메서드가 없는 경우, fulfilled 됩니다.', data)
})
// 객체가 promise 객체인지 데이터 객체인지 모를경우는 promise.resolve를 사용하면 편하다.
Promise.reject
Promise.reject(new Error('무슨무슨이유'))
.then(error => {})
.catch(error => {
console.log(error);
})
Promise.reject(new Error('무슨무슨이유'))
.then(error => {})
.catch(error => {
console.log(error);
})
promise.reject를 사용해서 바로 오류메세지를 보내는 경우는 많지 않으니 그냥 이런게 있다 정도로만 알아두자.
Promise.all
프로미스 객체 여러개를 생성하며, 배열로 만들어 인자로 넣고 Promise.all을 실행하면, 배열의 모든 프로미스 객체들이 fulfilled 되었을 때 then의 함수가 실행된다. then의 함수의 인자로 프로미스 객체들의 resolve 인자값을 배열로 돌려준다.
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
}, ms);
})
}
Promise.all([p(1000), p(2000), p(3000)]).then((messages) => {
console.log('모두 fulfilled 된 이후에 실행된다.', messages)
}) //3초 후에 출력됨
Promise.race
프로미스 객체 여러개를 생성하여 배열로 만들어 인자로 넣고 Promise.race를 실행하면, 배열의 모든 프로미스 객체들 중 가장 먼저 fulfilled 된 것으로,then의 함수가 실행됩니다. then의 함수의 인자로 가장 먼저 fulfilled 된 프로미스의 객체의 resolve 인자값을 돌려준다.
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
}, ms);
})
}
Promise.race([p(1000), p(2000), p(3000)]).then((message) => {
console.log('가장 빠른 하나가 fulfilled 된 이후에 실행된다.', message)
})// log 문구와 제일 빠른 프로미스인 p(1000)의 데이터값인 1000이 출력되지만 p(2000)과 p(3000)까지 실행 된 뒤에 종료된다.
Author And Source
이 문제에 관하여(자바스크립트 - promise 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhs000123/자바스크립트-promise-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)