>  기사  >  웹 프론트엔드  >  JavaScript의 약속 기반 작업에 대한 다양한 재시도 패턴은 무엇입니까?

JavaScript의 약속 기반 작업에 대한 다양한 재시도 패턴은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-22 18:58:03776검색

What are the Different Retry Patterns for Promise-Based Operations in JavaScript?

프라미스 기반 작업의 재시도 패턴

프라미스는 JavaScript에서 비동기 작업을 처리하는 편리한 방법을 제공합니다. 하지만 때로는 여러 번 작업을 재시도하거나 특정 조건이 충족될 때까지 작업을 다시 시도해야 하는 경우도 있습니다.

1. Promise가 해결될 때까지 재시도

해결될 때까지 작업을 계속 재시도하려면 재시도 간격과 최대 재시도 횟수를 사용하세요. 이는 for 루프와 .catch() 체인을 사용하여 달성할 수 있습니다:

<code class="js">for (var i = 0; i < maxRetries; i++) {
  p = p.catch(attempt).catch(rejectDelay);
}</code>

2. 조건이 충족될 때까지 재시도

결과에서 조건이 충족될 때까지 작업을 재시도하려면 .then() 체인을 사용하여 조건을 확인하고 .catch() 체인을 사용하여 실패를 처리합니다.

<code class="js">for (var i = 0; i < maxRetries; i++) {
  p = p.catch(attempt).then(test);
}</code>

3. 메모리 효율적인 동적 재시도 패턴

무제한 재시도 및 지정된 지연이 포함된 동적 재시도 메커니즘의 경우 .catch() 체인 접근 방식을 사용합니다.

<code class="js">var p = Promise.reject();
while (true) {
  p = p.catch(attempt).catch(rejectDelay);
  // Break out of the loop if the condition is met.
  if (conditionMet) break;
}</code>

참고 :

  • 재시도를 위한 .catch() 체인 접근 방식에는 최대 시도 횟수 및 메모리 소비와 관련하여 제한이 있습니다.
  • 복잡한 재시도 시나리오의 경우 다음을 사용하는 것이 좋습니다. 재귀 솔루션 또는 특수 제작된 재시도 라이브러리.

위 내용은 JavaScript의 약속 기반 작업에 대한 다양한 재시도 패턴은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.