javascript

setTimeout y setInterval en JavaScript, un acercamiento a los hilos

En este post voy a explicar dos funciones muy importantes que existen en JavaScript, me refiero a setTimeout y setInterval.

Ambas funciones nos permiten tener algo parecido a los hilos o threads en JavaScript, pero de una manera muy simple. Y por simple no quiero decir que le falten características, sino que es muy fácil de usar.

Por cierto, setTimeout y setInterval funcionan tanto en los navegadores web como en Node JS.

JavaScript y los hilos

JavaScript es por naturaleza asíncrono. Tiene callbacks, promesas o await. Las peticiones de AJAX las hace de manera asíncrona y también el funcionamiento con WebWorkers.

Todo esto hace que pensemos de manera asíncrona, con código no bloqueante como en otros lenguajes de programación.

Gracias a esto, setTimeout y setInterval nos permiten abstraer los hilos de manera sencilla.

setTimeout en JavaScript: o cómo agendar la ejecución de una función

setTimeout funciona para ejecutar determinada función tiempo después. La sintaxis es:

setTimeout(función, tiempoEnMilisegundosDeRetraso, argumentosQueSePasanALaFunción...)

Normalmente lo vas a ver con una función anónima así:

setTimeout(function() {
 console.log("Yo me imprimo un segundo después, es decir, mil milisegundos después :)");
}, 1000);

Ejemplos de setTimeout en JavaScript

En ese caso la función se va a ejecutar mil milisegundos después. Otra forma es usando funciones flecha:

setTimeout(() => {
 console.log("Función flecha. Me ejecuto un segundo después :)");
}, 1000);

Como el primer argumento es una función, igualmente podríamos pasarle el nombre de una función que ya exista. Así:

// Definir una función llamada imprimir
const imprimir = () => {
 console.log("Soy una función que imprime un mensaje a la consola");
};
// E indicar que se llame a imprimir en 1000 milisegundos
setTimeout(imprimir, 1000);

Para terminar la explicación, si la función que le pasas recibe argumentos, puedes pasar esos argumentos a setTimeout. Veamos un ejemplo:

// Definir una función llamada saludar que recibe el nombre y la edad
const saludar = (nombre, edad) => {
 console.log(`Hola ${nombre} tu edad es de ${edad}`);
};
// Llamar a saludar y pasarle argumentos
setTimeout(saludar, 1000, "Luis", 20);

Se podría decir que a la función que se llama se le pasan los argumentos desde el tercer lugar.

Para concluir analicemos la anatomía de setTimeout en JavaScript:

Anatomía de setTimeout en JavaScript

Cabe mencionar que igualmente se puede definir una función anómina dentro de setTimeout, y dentro de esa función llamar a otra con argumentos como en el siguiente código de ejemplo:

// Definir una función llamada saludar que recibe el nombre y la edad
const saludar = (nombre, edad) => {
 console.log(`Hola ${nombre} tu edad es de ${edad}`);
};
// Llamar a saludar y pasarle argumentos
setTimeout(function() {
 saludar("Luis", 21);
}, 1000);

Lo que devuelve setTimeout, y clearTimeout

Al llamar a setTimeout se devuelve un identificador. Más tarde, gracias a ese identificador, podemos cancelar el temporizador.

La sintaxis es:

let id = setTimeout(función, tiempoDeRetraso, argumentosQueSePasan);

Pero lo importante aquí es que gracias a ese id devuelto, podemos cancelar el temporizador (eso sí, debe ser antes de que ocurra) con clearTimeout así:

clearTimeout(id);

Usos de setTimeout

Personalmente lo he usado para indicarle al usuario que la operación fue exitosa y después redireccionarlo a otra página. Por ejemplo, que inserte un nuevo producto y lo redireccione a la página de productos.

Otros usos incluyen muchas cosas que dependen de la aplicación pero en resumen setTimeout funciona para poner un temporizador y ejecutar código cuando se termine el tiempo; con la opción de cancelarlo con clearTimeout.

setInterval: ejecutar código cada determinado tiempo, de manera repetitiva

Sintaxis es como el primo de setTimeout; ya que setInterval hace que determinada función se ejecute cada cierto tiempo.

En cambio, setTimeout ejecuta una función con retraso y ya, pero setInterval es repetitivo.

La sintaxis de uso es:

let idIntervalo = setInterval(función, cadaCuantosMilisegundosSeRepite, argumentos);

Para las funciones aplica lo mismo. Podemos definir una función anónima, función flecha o el nombre de una función. Y pasarle argumentos como se hizo con setTimeout. Veamos un ejemplo:

const imprimir = () => {
 console.log(`Soy llamada cada medio segundo`);
};
setInterval(imprimir, 500);

En ese caso se va a imprimir un mensaje cada medio segundo, de manera infinita. Lo repito: podemos pasar el nombre de la función, definir una anónima y pasar argumentos.

clearInterval y el id de setInterval

Justo como pasa con setTimeout, setInterval devuelve un id. Gracias a ese id podemos cancelar el intervalo llamando a clearInterval así:

clearInterval(idQueDevolvióSetInterval);

Y eso que se ejecute la función cada cierto tiempo.

Usos de setInterval en JavaScript

Son bastantes, pero uno de ellos podría ser refrescar un reloj con la hora actual. También podría mostrarse un contador y muchas cosas más.

Conclusión

Hemos aprendido a usar setTimeout y setInterval: una forma fácil de trabajar con hilos en JavaScript.

Cabe mencionar que puedes llamar a setTimeout y setInterval infinitas veces; es decir, tener muchos procesos ejecutándose al mismo tiempo.

Eso sí, ten cuidado con las variables y las condiciones de carrera.

Te invito a leer más sobre JavaScript y sobre Node.js.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

1 semana hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

1 semana hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

2 semanas hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

3 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

3 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.