La función setTimeout() en Angular

Rana Hasnain Khan 30 enero 2023
  1. Función setTimeout() en Angular usando IIFE y recursividad de funciones
  2. setTimeout() Función al pasar la lista de valores en Angular
La función setTimeout() en Angular

Introduciremos la función setTimeout() de Angular usando la Expresión de Función Invocada Inmediatamente (IIFE) y la recursividad de la función. También presentaremos la función setTimeout() de Angular pasando una lista de las veces que queremos esperar e iterarlas de forma recursiva.

Función setTimeout() en Angular usando IIFE y recursividad de funciones

Podemos utilizar la función setTimeout() por varias razones. Es mejor permitir que Angular ejecute la detección de cambios una vez, entre las acciones que de otro modo realizaríamos sincrónicamente.

setTimeout() es una función de JavaScript nativa que establece un temporizador para ejecutar una función de devolución de llamada, llamando a la función una vez que el temporizador ha terminado.

Un simple ejemplo de función setTimeout():

let i = 0;
let max = 5;
(function repeat(){
  if (++i > 5) return;
  setTimeout(function(){
    console.log("waited for: " + i + " seconds");
    repeat();
  }, 1000);
})();

Producción:

Función setTimeout en angular usando IIFE y recursividad de funciones

En el bloque de código anterior, definimos un número entero i y max y usamos una función de repetición para repetir nuestro tiempo de espera hasta que se cumpla la condición.

Si los valores de i son mayores que max, este bucle se romperá. Si el valor de i permanece por debajo del valor max, se repetirá cada 1s e imprimirá waited for: 1 to 5 seconds.

setTimeout() Función al pasar la lista de valores en Angular

Si tenemos una lista de valores para los cuales queremos que nuestro programa espere y ejecute la función de devolución de llamada, podemos configurar nuestra función para que pase un array como parámetro y se ejecute hasta que el array esté completa.

Código de ejemplo:

let waitList = [5000, 4000, 3000, 1000];

function setDelay(times) {
  if (times.length > 0) {
    // Remove the first time from the array
    let wait = times.shift();
    console.log("Waiting For: " + wait/1000 + " seconds");
    
    // Wait for the given amount of time
    setTimeout(() => {
        console.log("Waited For: " + wait/1000 + " seconds");
        // Call the setDelay function again with the remaining times
        setDelay(times);
    }, wait);
  }
}

setDelay(waitList);

Producción:

Función setTimeout pasando lista de valores en angular

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

Artículo relacionado - Angular Function