// Promise
// Promise에서 resolve가 실행이 되면 종료, reject가 실행되면 오류
const onClickPromise = async () => {
const result1 = await new Promise((resolve, reject) => {
setTimeout((resolve("3초 후 실행됩니다.")) => {}, 3000)
})
const result2 = await new Promise((resolve, reject) => {
setTimeout((resolve("2초 후 실행됩니다.")) => {}, 2000)
})
const result3 = await new Promise((resolve, reject) => {
setTimeout((resolve("1초 후 실행됩니다.")) => {}, 1000)
})
};
// Promise.all()
const onClickPromiseAll = async () => {
const result = await Promise.all([
setTimeout((resolve("3초 후 실행됩니다.")) => {}, 3000)
setTimeout((resolve("2초 후 실행됩니다.")) => {}, 2000)
setTimeout((resolve("1초 후 실행됩니다.")) => {}, 1000)
])
};
위의 함수는 result1 이 실행되고 난 후에 result2가 실행이 되고, result2가 실행된 후에, result3이 실행
됩니다. 따라서 onClickPromise 함수의 경우 약 6초의 시간이 소요됩니다.
Promise.all() 의 경우에는 Promise.all()에 포함되어 있는 함수들을 동시에 실행
을 합니다. 따라서 onClickPromiseAll 함수의 경우 약 3초의 시간이 소요됩니다.
Promise.all()을 사용하여 한번에 여러 함수를 실행할 때에는 map, for, forEach를 사용할 수 있습니다.
promise 생성자 함수를 new 연산자와 함께 호출하면 프로미스(promise 객체)를 생성합니다.
ES6에서 도입된 promise는 호스트객체가 아닌 ECMAScript 사양에 정의된 표준 빌트인 객체라고 합니다!
promise 생성자 함수는 비동기 처리를 수행할 콜백함수를 인수로 전달 받는데 이 콜백 함수는 resolve와 reject 함수응 인수로 전달 받습니다
Promise.all([
1,
2,
3,
])
.then(console.log) // [1,2,3]
.catch(console.log);