"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 > Como posso criar loops assíncronos em JavaScript?

Como posso criar loops assíncronos em JavaScript?

Publicado em 2024-11-03
Navegar:430

How Can I Create Asynchronous Loops in JavaScript?

Loops assíncronos em JavaScript

Embora o JavaScript forneça vários tipos de loops, criar um loop que pausa a execução para aguardar uma chamada assíncrona pode ser desafiante. Isso ocorre porque misturar código síncrono e assíncrono pode levar a um comportamento inesperado.

Solução: adote a abordagem assíncrona

Para superar essa limitação, é necessário abraçar totalmente o evento abordagem baseada em JavaScript. Isso envolve o uso de uma função que será chamada quando a chamada assíncrona for concluída. O loop pode então continuar a execução após o retorno de chamada ser invocado.

Introduzindo a função asyncLoop

Uma função auxiliar chamada asyncLoop pode ser criada para facilitar esse comportamento de loop assíncrono. São necessários três parâmetros:

  • iterations: O número de vezes que o loop deve ser executado.
  • func: A função a ser executada em cada iteração.
  • callback: O função a ser chamada quando o loop for concluído.

A função asyncLoop mantém um índice de variável interno para rastrear a iteração atual e sinaliza uma variável concluída para indicar quando o loop foi concluído. Dentro da função, há um objeto de loop interno que fornece os seguintes métodos:

  • next(): Avança o loop em uma iteração.
  • iteration(): Retorna a iteração atual.
  • break(): encerra o loop antecipadamente.

Para iniciar o loop, loop.next() é chamado. Cada vez que a função func é invocada, ela pode chamar loop.next() para continuar o loop ou loop.break() para encerrá-lo.

Exemplo de uso:

O exemplo a seguir demonstra como usar a função asyncLoop para criar um loop assíncrono:

asyncLoop(10, (loop) => {
  someFunction(1, 2, (result) => {
    console.log(loop.iteration());
    loop.next();
  });
}, () => {
  console.log('cycle ended');
});

Este código executará someFunction 10 vezes de forma assíncrona e registrará o número da iteração no console. A mensagem de fim de ciclo será impressa quando o loop for concluído.

Ao utilizar essa abordagem, os desenvolvedores de JavaScript podem criar loops assíncronos que funcionam perfeitamente no ambiente orientado a eventos, evitando possíveis problemas com o bloqueio do script e do navegador.

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