"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quais são os diferentes padrões de repetição para operações baseadas em promessas em JavaScript?

Quais são os diferentes padrões de repetição para operações baseadas em promessas em JavaScript?

Publicado em 2024-11-10
Navegar:939

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

Padrões de repetição para operações baseadas em promessas

As promessas fornecem uma maneira conveniente de lidar com operações assíncronas em JavaScript. No entanto, às vezes é necessário repetir as operações várias vezes ou até que uma condição específica seja atendida.

1. Tentando novamente até que a promessa seja resolvida

Para repetir continuamente uma operação até que ela seja resolvida, use um atraso entre novas tentativas e um número máximo de tentativas. Isso pode ser conseguido usando um loop for e encadeamento .catch():

for (var i = 0; i 

2. Tentando novamente até que a condição seja atendida

Para tentar novamente uma operação até que uma condição seja atendida no resultado, use uma cadeia .then() para verificar a condição e uma cadeia .catch() para lidar com falhas:

for (var i = 0; i 

3. Padrão de nova tentativa dinâmica com uso eficiente de memória

Para um mecanismo de nova tentativa dinâmico com tentativas ilimitadas e um atraso especificado, use a abordagem de cadeia .catch():

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;
}

Nota:

  • A abordagem em cadeia .catch() para novas tentativas tem limitações em relação ao número máximo de tentativas e ao consumo de memória.
  • Para cenários de repetição complexos, é recomendado usar soluções recursivas ou bibliotecas de repetição específicas.
Declaração de lançamento Este artigo foi reimpresso em: 1729587495 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3