1. 연속되는 Promise
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
//reject(new Error('reason'))
}, ms)
});
}
p(1000)
.then(()=>p(1000))
.then(()=>p(1000))
.then(()=>{
console.log('3000ms 후에 실행');
});
다음소스코드와 같이 체인 형식으로 되어있다.
2. 연속되는 async await
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
//reject(new Error('reason'))
}, ms)
});
}
(async function main(){
await p(1000);
await p(1000);
await p(1000);
console.log('3000ms 후에 실행');
})();
3. Promise.all
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
//reject(new Error('reason'))
}, ms)
});
}
(async function main(){
const results = await Promise.all([p(1000), p(2000), p(3000)]);
console.log(results);
})();
p(3000)까지 3초동안 일을 처리하고 한거뻔에 배열로 출력하게 한다.
4. Promise.race
function p(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(ms);
//reject(new Error('reason'))
}, ms)
});
}
(async function main(){
const result = await Promise.race([p(1000), p(2000), p(3000)]);
console.log(result);
})();
이것은 배열로 값이 전부다 넘어오는것이 아닌, 가장빨리 처리되는 하나만 result로 반환된다.
'Javascript > 비동기 처리' 카테고리의 다른 글
Promise 나온이유 및 사용방법(feat. 만약 callback함수를 쓰게 된다면?, Promise의 문제점) (0) | 2021.02.02 |
---|---|
Javascript 비동기 처리의 이해 (feat. 주로 처리하는 작업) (0) | 2021.02.02 |
Async-Await (0) | 2021.01.27 |
Promise - Promise.all, Promise.race (0) | 2021.01.27 |
비동기처리란? (0) | 2021.01.27 |