라이브러리

[JAVASCRIPT] Promise.all(promises) - 모든 프로미스가 완료될 때까지 기다린 후 결과 배열 반환




Promise.all(promises)란?


`Promise.all(promises)`는 자바스크립트의 Promise API 중 하나로, 여러 개의 Promise를 동시에 처리하고, 모두 성공적으로 완료되면 결과를 반환하는 메서드입니다.

사용법


`Promise.all(promises)`를 사용하려면, 먼저 여러 개의 Promise를 생성하고, 그 Promise를 배열로 만들어야 합니다. 그런 다음 `Promise.all()` 메서드를 사용하여 Promise를 전달합니다.

예제 1: 기본적인 사용법


#hostingforum.kr
javascript

// Promise를 생성하는 함수

function delay(ms) {

  return new Promise((resolve) => {

    setTimeout(resolve, ms);

  });

}



// Promise를 생성

const promise1 = delay(2000);

const promise2 = delay(3000);

const promise3 = delay(4000);



// Promise를 배열로 만들고, Promise.all() 메서드를 사용

Promise.all([promise1, promise2, promise3])

  .then((results) => {

    console.log(results); // [undefined, undefined, undefined]

  })

  .catch((error) => {

    console.error(error);

  });



예제 2: Promise.all()의 결과


`Promise.all()`의 결과는 Promise가 모두 성공적으로 완료된 후에 반환됩니다. 만약 하나 이상의 Promise가 실패하면, `Promise.all()`은 첫 번째 실패한 Promise의 결과를 반환합니다.

#hostingforum.kr
javascript

// Promise를 생성하는 함수

function delay(ms) {

  return new Promise((resolve, reject) => {

    if (ms === 3000) {

      reject("Error!");

    } else {

      setTimeout(resolve, ms);

    }

  });

}



// Promise를 생성

const promise1 = delay(2000);

const promise2 = delay(3000);

const promise3 = delay(4000);



// Promise를 배열로 만들고, Promise.all() 메서드를 사용

Promise.all([promise1, promise2, promise3])

  .then((results) => {

    console.log(results); // [undefined, Error!, undefined]

  })

  .catch((error) => {

    console.error(error); // Error!

  });



예제 3: Promise.allSettled()


`Promise.all()`은 첫 번째 실패한 Promise의 결과를 반환하지만, `Promise.allSettled()`은 모든 Promise의 결과를 반환합니다. 만약 하나 이상의 Promise가 실패하면, 실패한 Promise의 결과도 포함됩니다.

#hostingforum.kr
javascript

// Promise를 생성하는 함수

function delay(ms) {

  return new Promise((resolve, reject) => {

    if (ms === 3000) {

      reject("Error!");

    } else {

      setTimeout(resolve, ms);

    }

  });

}



// Promise를 생성

const promise1 = delay(2000);

const promise2 = delay(3000);

const promise3 = delay(4000);



// Promise를 배열로 만들고, Promise.allSettled() 메서드를 사용

Promise.allSettled([promise1, promise2, promise3])

  .then((results) => {

    console.log(results);

    // [

    //   { status: 'fulfilled', value: undefined },

    //   { status: 'rejected', reason: 'Error!' },

    //   { status: 'fulfilled', value: undefined }

    // ]

  })

  .catch((error) => {

    console.error(error);

  });



결론


`Promise.all(promises)`는 여러 개의 Promise를 동시에 처리하고, 모두 성공적으로 완료되면 결과를 반환하는 메서드입니다. 만약 하나 이상의 Promise가 실패하면, 첫 번째 실패한 Promise의 결과를 반환합니다. `Promise.allSettled()`은 모든 Promise의 결과를 반환합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 3 페이지

검색

게시물 검색