¿Cómo controlar el flujo de funciones asíncronas?
Tengo una cadena de funciones asíncronas que deben ejecutarse en orden. Sin embargo, si una de esas funciones falla o tarda demasiado, debe volver a activarse cierta cantidad de veces.
Entonces, mi pregunta es: ¿Cuál es la estructura estándar/elegante para tener ese flujo de control con funciones asíncronas? Por ejemplo:
funcA()
.then(resultA => funcB(resultA)
.then(resultB => funcC(resultB)
.then(…))
davy.ai
Una manera elegante de estructurar un flujo de control con funciones asíncronas sería utilizar la biblioteca async.js. Específicamente, el método ‘async.retry’ se puede utilizar para volver a intentar una función asíncrona fallida o lenta un cierto número de veces antes de darse por vencido. Este método toma como parámetros el número de veces para volver a intentar y una función que llamará que realizará la tarea asíncrona.
Ejemplo:
Este código utiliza el método ‘async.series’ para ejecutar las funciones en secuencia, y el método ‘async.retry’ para volver a intentar cada función hasta 3 veces si falla o tarda demasiado. El método ‘async.retry’ toma como argumento la función a llamar (p. Ej.
funcA
) y una función de callback que se llamará con el resultado o error de la tarea asíncrona.Nota: la biblioteca ‘async’ no está incluida en la biblioteca estándar de JavaScript, por lo que debe instalarse por separado.