<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Programaci%C3%B3n_As%C3%ADncrona_en_JavaScript</id>
	<title>Programación Asíncrona en JavaScript - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Programaci%C3%B3n_As%C3%ADncrona_en_JavaScript"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Programaci%C3%B3n_As%C3%ADncrona_en_JavaScript&amp;action=history"/>
	<updated>2026-10-22T16:55:55Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Programaci%C3%B3n_As%C3%ADncrona_en_JavaScript&amp;diff=69826&amp;oldid=prev</id>
		<title>Vieites: /* setInterval() */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Programaci%C3%B3n_As%C3%ADncrona_en_JavaScript&amp;diff=69826&amp;oldid=prev"/>
		<updated>2021-10-28T05:58:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;setInterval()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Cuando una aplicación JavaScript es ejecutada en un equipo, esta corre en &amp;#039;&amp;#039;single-threaded&amp;#039;&amp;#039; (un solo hilo de ejecución).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
== Promise ==&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
== Generator ==&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
== Herramientas de tiempo en JavaScript ==&lt;br /&gt;
=== setTimeout() ===&lt;br /&gt;
El método setTimeout() permiten programar la ejecución de alguna parte del código de JavaScript después del paso de una cantidad definida de milisegundos.&lt;br /&gt;
&lt;br /&gt;
Veamos un ejemplo muy sencillo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  function susto() { alert(&amp;#039;Boooooo!&amp;#039;) };&lt;br /&gt;
  setTimeout(susto, 3000);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un ejemplo que puede servirnos como base para hacer el &amp;#039;&amp;#039;&amp;#039;Juego de Buscar parejas&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;estilos.css&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div id=&amp;quot;contenido&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;script src=&amp;quot;scripts.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
body {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
#contenido {&lt;br /&gt;
  /* Ancho de 700px y centrado en el navegador */&lt;br /&gt;
    width: 400px; height: 400px;&lt;br /&gt;
    margin: auto;&lt;br /&gt;
  /* Borde sólido y fondo gris clarito */&lt;br /&gt;
    border: solid 1px black;&lt;br /&gt;
    background-color: #CCCCCC;&lt;br /&gt;
}&lt;br /&gt;
/* Creamos una ficha centrada y de color verdoso */&lt;br /&gt;
.ficha {&lt;br /&gt;
    width: 100px; height: 100px;&lt;br /&gt;
    background-color: olivedrab;&lt;br /&gt;
    border: solid 1px black;&lt;br /&gt;
    margin-left: 20px; margin-right: auto;&lt;br /&gt;
    margin-top: 20px; margin-bottom: 10px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    float: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.fichaVolt {&lt;br /&gt;
    background-color: orangered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function girarCarta(e) {&lt;br /&gt;
	//Función que se ejecuta al hacer click&lt;br /&gt;
&lt;br /&gt;
	//Eliminamos temporalmente el escuchador para no acumular más de un click&lt;br /&gt;
	const losDivs = document.getElementsByClassName(&amp;#039;ficha&amp;#039;);&lt;br /&gt;
	for (const div of losDivs) {&lt;br /&gt;
		div.removeEventListener(&amp;quot;click&amp;quot;, girarCarta, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var ficha = this;&lt;br /&gt;
&lt;br /&gt;
	//Guardamos el contenido inicial de la ficha&lt;br /&gt;
	var contInicial = ficha.innerHTML;&lt;br /&gt;
	//Lo cambiamos por el texto que nos interese&lt;br /&gt;
	let contFicha = ficha.getAttribute(&amp;#039;id&amp;#039;);&lt;br /&gt;
    ficha.innerHTML = contFicha;&lt;br /&gt;
    //Y le añadimos una clase más para cambiar aspecto&lt;br /&gt;
    ficha.classList.add(&amp;#039;fichaVolt&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	//Realizamos una pausa de 3 segundos con setTimeout&lt;br /&gt;
	setTimeout(function () {&lt;br /&gt;
		//Creamos una función de Callback que&lt;br /&gt;
		//Reescribe el contenido anterior&lt;br /&gt;
        ficha.innerHTML = contInicial;&lt;br /&gt;
        ficha.classList.remove(&amp;#039;fichaVolt&amp;#039;);&lt;br /&gt;
		//Volvemos a configurar el escuchador&lt;br /&gt;
		for (const div of losDivs) {&lt;br /&gt;
			div.addEventListener(&amp;quot;click&amp;quot;, girarCarta, false);&lt;br /&gt;
		}&lt;br /&gt;
	}, 3000); //No olvidar configurar el tiempo de pausa&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Número de fichas a crear&lt;br /&gt;
const numFichas = 9;&lt;br /&gt;
//Creamos las fichas como objetos DOM&lt;br /&gt;
for (let i = 0; i &amp;lt; numFichas; i++) {&lt;br /&gt;
  //Div donde vamos a crear las fichas&lt;br /&gt;
	const contenido = document.getElementById(&amp;quot;contenido&amp;quot;);&lt;br /&gt;
  //Creamos el div&lt;br /&gt;
	const div = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
  //Contenido del div, un simple texto&lt;br /&gt;
	const innerDiv = document.createTextNode(`Ficha_${i}`);&lt;br /&gt;
	div.appendChild(innerDiv);&lt;br /&gt;
  //Configuramos el atributo id distinto a cada ficha&lt;br /&gt;
	div.setAttribute(&amp;quot;id&amp;quot;, `ficha${i}`);&lt;br /&gt;
  //Le añadimos la clase &amp;#039;ficha&amp;#039;&lt;br /&gt;
	div.classList.add(&amp;quot;ficha&amp;quot;);&lt;br /&gt;
  //Configuramos el escuchador click -&amp;gt; girarCarta&lt;br /&gt;
	div.addEventListener(&amp;quot;click&amp;quot;, girarCarta, false);&lt;br /&gt;
  //Lo añadimos al div &amp;#039;contenido&amp;#039;&lt;br /&gt;
	contenido.appendChild(div);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SetInterval01.png|miniaturadeimagen|centro|setTimeout]]&lt;br /&gt;
&lt;br /&gt;
=== setInterval() ===&lt;br /&gt;
[https://developer.mozilla.org/es/docs/Web/API/WindowTimers/setInterval setInterval()] ejecuta una función repetidamente con un intervalo de tiempo configurado en milisegundos.&lt;br /&gt;
&lt;br /&gt;
Esta función devuelve un entero que representa el ID de la ejecución. Este ID es utilizado para cancelar la ejecución, empleando para ello el método [https://developer.mozilla.org/es/docs/Web/API/WindowTimers/clearInterval clearInterval()].&lt;br /&gt;
&lt;br /&gt;
Veamos el siguiente ejemplo donde se crea una web con un título que cambia de color cada 2 segundos. Paramos ese cambio de color con un botón que anula la función setInterval():&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;es&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;meta charset=&amp;quot;UTF-8&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt;JavaScript&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		&amp;lt;h1 id=&amp;quot;miH1&amp;quot;&amp;gt;Este título cambia de color&amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;lt;br /&amp;gt;&lt;br /&gt;
		&amp;lt;button id=&amp;quot;para&amp;quot;&amp;gt;Para setInterval&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;script src=&amp;quot;scripts.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Dado un número devuelve uno aleatorio de 1-val&lt;br /&gt;
function randomVal(val) {&lt;br /&gt;
	return Math.floor(Math.random() * val)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Devuelve un string de la forma : rgb(255,255,255)&lt;br /&gt;
function randomColor() {&lt;br /&gt;
	return ( `rgb(${randomVal(255)},${randomVal(255)},${randomVal(255)})`)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cambia de color el elemento &amp;#039;miH1&amp;#039;&lt;br /&gt;
function cambiaColor() {&lt;br /&gt;
	const miH1 = document.getElementById(&amp;#039;miH1&amp;#039;)&lt;br /&gt;
	const nColor = randomColor()&lt;br /&gt;
	miH1.style.color = nColor&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Cada 2 segundos se ejecuta la función cambiaColor&lt;br /&gt;
let miSetIntervalID = setInterval(cambiaColor, 2000)&lt;br /&gt;
&lt;br /&gt;
//Paramos el setInterval() con el botón para&lt;br /&gt;
const botonPara = document.getElementById(&amp;#039;para&amp;#039;)&lt;br /&gt;
botonPara.addEventListener(&amp;#039;click&amp;#039;, function(){&lt;br /&gt;
	clearInterval(miSetIntervalID)&lt;br /&gt;
	console.log(&amp;#039;Parao!!&amp;#039;)&lt;br /&gt;
}, false)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[JavaScript|Volver]]&lt;/div&gt;</summary>
		<author><name>Vieites</name></author>
	</entry>
</feed>