promise & promiseAll

OwlSuri·2022년 4월 26일
0
post-custom-banner

하나씩 할래 - promise
아님 한번에 할래 - promiseAll

 export default function PromiseAllPage(){

    const onClickPromise = async () =>{
        console.time("Promise 시작")

        // 프로미스는 시간이 걸리는 작업이라 큐로 빠짐
       const result1 = await new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve("https://dog1.jpg")
           }, 3000)
        })
        console.log(result1)

        const result2 = await new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve("https://dog2.jpg")
           }, 1000)
        })
        console.log(result2)

        const result3 = await new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve("https://dog3.jpg")
           }, 2000)
        })
        console.log(result3)
        console.timeEnd("Promise 시작")
        
    }

    const onClickPromiseAll = async() =>{
        // 1. 하나하나씩 확인하는 방법
        // console.time("PromiseAll 시작")
        // // 동시에 실행시키고 싶은 것들을 배열형태로 넣음
        // const result = await Promise.all([
        //     new Promise((resolve, reject) => {
        //    setTimeout(() => {
        //        resolve("https://dog1.jpg")
        //    }, 3000)
        // }),
        // new Promise((resolve, reject) => {
        //    setTimeout(() => {
        //        resolve("https://dog2.jpg")
        //    }, 3000)
        // }),
        //  new Promise((resolve, reject) => {
        //    setTimeout(() => {
        //        resolve("https://dog3.jpg")
        //    }, 3000)
        // }),
        // ])
        // console.log(result)
        // console.timeEnd("PromiseAll 시작")

        // 2. 한방에 확인하는 방법
         console.time("PromiseAll 시작")

        const result = await Promise.all(        
            ["https://dog1.jpg", "https://dog2.jpg", "https://dog3.jpg"].map(
                (el) =>
                new Promise((resolve, reject) => {
                    setTimeout(() => {
                        resolve(el)
                    }, 3000)
            }),
        ))
        console.log(result)
        console.timeEnd("PromiseAll 시작")
    }

    return(
        <div>
            <button onClick={onClickPromise}>promise 연습하기</button>
            <button onClick={onClickPromiseAll}>promise.all 연습하기</button>
        </div>
    )
}

같은 코드를 각각 promise했을때는 6초 정도 걸리고,
한번에 promiseAll을 했을때는 3초밖에 걸리지 않았다.

profile
기억이 안되면, 기록을 -
post-custom-banner

0개의 댓글