promise.all => 최종적으로 기다렸다가 한번만 반환
function a(){
return new Promise(resolve => {
setTimeout(() => {
resolve('A') //이행
}, 1000)
})
}
function b(){
return new Promise(resolve => {
setTimeout(() => {
resolve('B') //이행
}, 2000)
})
}
;(async () => {
const res = await Promise.all([a(), b()])
console.log(res)
})()
Promise.race => 선착순. 제일 먼저 온 값만 반환
function a(){
return new Promise(resolve => {
setTimeout(() => {
resolve('A') //이행
}, 1000)
})
}
function b(){
return new Promise(resolve => {
setTimeout(() => {
resolve('B') //이행
}, 2000)
})
}
function c(){
return new Promise(resolve => {
setTimeout(() => {
resolve('C') //이행
}, 3000)
})
}
;(async () => {
const res = await Promise.race([a(), b(), c()])
console.log(res)
})()
forEach는 비동기를 순서대로 돌릴수가 없음. 한번에 팍뜸!
function a(){
return new Promise(resolve => {
setTimeout(() => {
resolve('A')
}, 1000)
})
}
function b(){
return new Promise(resolve => {
setTimeout(() => {
resolve('B')
}, 1000)
})
}
function c(){
return new Promise(resolve => {
setTimeout(() => {
resolve('C')
}, 1000)
})
}
const arr = [a, b, c]
arr.forEach(async item => {
console.log(await item())
})
for 반복문은 비동기를 순서대로 돌릴 수 있음
function a(){
return new Promise(resolve => {
setTimeout(() => {
resolve('A')
}, 1000)
})
}
function b(){
return new Promise(resolve => {
setTimeout(() => {
resolve('B')
}, 1000)
})
}
function c(){
return new Promise(resolve => {
setTimeout(() => {
resolve('C')
}, 1000)
})
}
;(async () => {
const arr = [a, b, c]
for( let i = 0; i< arr.length; i += 1){
console.log(await arr[i]())
}
})()
for => 기본
for in => 객체
for of => 배열