Sé que es un título clickbait, pero esta es una pregunta seria. Recientemente, en Sri Lanka, el gobierno implementó la aplicación https://fuelpass.gov.lk/ donde un ciudadano de Sri Lanka puede registrarse y verificar el combustible disponible para el vehículo registrado. (El sistema fue diseñado para controlar la cantidad de combustible disponible para un individuo ya que las importaciones de combustible se han ralentizado debido a la crisis económica).
Cuando revisé el sistema ayer, me di cuenta de que habían implementado la compilación de desarrollo en producción. Mientras revisaba el código, noté que en el componente de inicio de Login , hay una llamada setTimeout en el envío del formulario para mostrar una animación de carga.
El componente de inicio de sesión se veía así:
export default () => { const [waiting, setWaiting] = useState(false) return( <Loading showLoading = {waiting}> <form onSubmit = {() => { setWaiting(true) setTimeout(async () => { await loginRequestCall() setWaiting(false) }, Math.floor(Math.random() * 5000) }}> <input /> <button>Send OTP</button> </form> </Loading> ) } Captura de pantalla del código fuente: 
La parte importante es que, cuando el usuario hace clic en Send OTP , muestra la pantalla de carga, solo después de esperar una cantidad de tiempo aleatoria, envía la solicitud.
Creé un video sobre esto y se volvió viral en Sri Lanka. Según los comentarios, algunas de las justificaciones (para usar setTimeout con una cantidad aleatoria de tiempo de espera) fueron las siguientes.
No creo que si alguien quisiera DDos sería lo suficientemente tonto como para usar la automatización de la interfaz de usuario. No hay necesidad de setTimeout para evitar el spam también.
Lo cual me deja con el último punto.
Entonces mis preguntas son,
setTimeout ?setTimout ?¿Es posible cargar el saldo usando setTimeout?
El equilibrio de carga es el proceso de distribución del tráfico de red entre varios servidores.
Dado que el equilibrio de carga no reduce la cantidad de llamadas sino que las distribuye, no es posible equilibrar la carga usando setTimeout
Si es así, ¿cómo distribuiría exactamente la carga?
Como mencioné, es imposible hacerlo con setTimeout , al menos no de una manera ineficiente y no pirateada.
¿Hay alguna razón válida para agregar un setTimout?
En mi opinión, este setTimeout podría estar destinado a usarse como una función de debounce para evitar que el usuario haga clic en el botón OTP varias veces si la retroalimentación no se proporciona de inmediato (pero aún así no funciona, ya que todas las llamadas se realizarán de todos modos).
Entonces, la respuesta es NO , en mi opinión, no hay ninguna razón válida para este setTimeout