¿Cómo implementar una función que habilite otra función después de un tiempo específico usando JavaScript?

Supongamos que se nos ha dado una función add() que toma dos parámetros a y b , y devuelve su suma. Se supone que debemos implementar una función que debería poder llamar a cualquier función después de la cantidad de tiempo de retraso dada. Esto se puede hacer con los enfoques que se indican a continuación:

Enfoque 1: crear una función que tenga en cuenta la cantidad de retraso, la función que se llamará y los parámetros que se darán.

En este enfoque, pasaremos la función add() junto con sus parámetros al callAfter() que hemos creado . El método setTimeout() se usa para llamar a la función add() desde el interior del método callAfter() después de la cantidad de tiempo de retraso dada. Los parámetros también se pasan a la función.

Ejemplo:

HTML

<!DOCTYPE html>
<html>
  
<body>
    <script>
        function callAfter(delay, myFunct,
            ...params) {
            setTimeout(() => {
                myFunct(...params);
            }, delay);
        }
  
        function add(a, b) {
            alert("The sum is : " + (a + b));
        }
  
        callAfter(2000, add, 4, 7);
    </script>
</body>
  
</html>

Enfoque 2: Uso de una función anónima.

En algunos casos, es posible que desee pasar una función con argumentos, pero no desea que se llame hasta que se invoque la devolución de llamada. En este caso, podría envolverlo en una función anónima.

Ejemplo:

HTML

<!DOCTYPE html>
<html>
  
<body>
    <script>
        function callAfter(delay, funct) {
            setTimeout(() => {
                funct();
            }, delay);
        }
  
        function add(a, b) {
            alert("The sum is : " + (a + b));
        }
  
        callAfter(2000, function() {
            add(4, 7);
        });
    </script>
</body>
  
</html>

Enfoque 3: uso de un prototipo en JavaScript: en este enfoque, podemos agregar un método al objeto prototipo del constructor de funciones. Esto nos permitirá usar callAfter() con cualquier función.

Sintaxis:

functionName.callAfter(delay, param1, param2, ....);

Ejemplo:

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>Call after</title>
</head>
  
<body>
    <script>
        Function.prototype.callAfter =
            function(delay, ...params) {
                setTimeout(() => this(...params), delay);
            };
  
        function add(a, b) {
            alert("The sum is : " + (a + b));
        }
  
        add.callAfter(2000, 4, 7);
    </script>
</body>
  
</html>

Salida: se muestra un mensaje de alerta después del retraso especificado para todos los enfoques mencionados anteriormente.

Publicación traducida automáticamente

Artículo escrito por lekheshwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *