promis / async & await

나쿠크·2023년 1월 7일
0

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 => 배열

0개의 댓글