본문 바로가기
javascript

만약 우리가 처리해야 할 약속이 여러 개 있다면요?

by it-square 2022. 1. 19.
반응형

JavaScript에서 여러 약속 처리:

Promise는 특별한 자바스크립트 객체라는 것을 이미 알고 있습니다. 비동기(일명 비동기) 작업이 성공적으로 완료된 후 또는 시간 초과, 네트워크 오류 등으로 인해 성공적으로 완료되지 않은 경우 오류가 발생합니다.

프로미스(Promise)는 실행자 함수를 사용하여 작업을 완료합니다(대부분 비동기). 소비자 함수(프로밋의 결과를 사용하는)는 실행 함수가 해결(성공) 또는 거부(오류)로 완료될 때 알림을 받아야 한다.

핸들러 메소드인 .then(), .catch() 및 .finally()는 실행자와 소비자 함수 사이의 링크를 만드는 것을 도와서 약속이 해결되거나 거부될 때 동기화될 수 있다.

 

처리기 메서드(.then, .catch, .finally)를 제외하고 Promise API에는 여섯 개의 정적 메서드가 있다. 처음 네 가지 방법은 약속의 배열을 받아들이고 그것들을 병렬로 실행한다. 동시에 실행되는 약속을 처리하려면 해당 약속을 배열로 푸시해야 합니다. 그런 다음 아래에 언급된 방법을 사용하여 다양한 유형의 사례를 처리합니다.

  • 약속.모든.
  • 약속.조금도
  • 약속.모두 설정됨
  • 약속해 인종
  • 약속해.해결해
  • 약속.거절하다

Promise.all() 방법:

Promise.all()은 약속의 집합(예: 배열)을 인수로 받아들이고 병렬로 실행합니다.

이 메서드는 모든 약속이 해결될 때까지 기다린 후 약속 결과의 배열을 반환합니다. 오류로 인해 약속이 실패하거나 거부되면 다른 모든 약속 결과는 무시됩니다.

 

그래서 위의 예에서, 약속은 분명합니다. 모든 약속은 해결되거나 거부될 수 있다.

Promise. all() 방법을 사용하여 약속 배열을 전달합니다.

위의 코드는 모든 약속의 결과가 반환되는지 여부를 확인할 것입니다. 모든 약속을 실행하는 시간은 약속이 실행되는 데 걸리는 최대 시간과 같습니다.

Promise.any() 방법:

Promise. any()는 all() 메소드와 유사하게 병렬로 실행할 약속의 배열도 수락한다. 이 방법은 모든 약속이 해결될 때까지 기다리지 않습니다. 약속 중 하나라도 정해지면 이뤄진다.

 

보시다시피 위의 코드는 해결된 약속의 결과입니다.

약속.allSettled() 메서드:

약속. allsettled() ) 이 메서드는 모든 약속이 안착될 때까지 기다리며(리졸브/거부) 개체 배열로 결과를 반환합니다. 결과에는 상태(충만/거부됨)와 값이 포함됩니다(충만될 경우). 거부 상태의 경우 오류 사유를 반환합니다.

위의 코드는 각 요소 또는 각 약속에 대한 상태 및 값의 출력과 함께 결과의 배열을 실행합니다. 약속이 해결되면 이행됨의 상태와 그들의 능력으로 값을 실행하게 됩니다. 만약 어떤 약속이라도 거절한다면, 예를 들어, Promise_1는 Rejected의 상태와 주어진 "There is error"와 같은 값을 실행하게 된다.

Promise.race() 메서드:

 

Promise.race()는 첫 번째(가장 빠른) 약속이 해결될 때까지 기다린 후 그에 따라 결과/오류를 반환합니다.

그러므로, 위의 코드는 해결된 가장 빠른 약속을 출력한다.

Promise.resolve/reject 메서드:

Promise.resolve(값) — 전달된 값의 약속을 해결합니다. 이는 다음과 같습니다.

 

약속.거부(오류) — 오류가 전달된 약속을 거부합니다.

2022년 1월 18일 https://www.codeaxess.com에서 처음 출판되었다.

댓글