Tutorial JS

JS INICIO JS Introducción JS Dónde Salida JS Declaraciones JS Sintaxis JS Comentarios JS Variables JS JS Vamos Constante JS Operadores JS Aritmética JS Tarea JS Tipos de datos JS Funciones JS Objetos JS Eventos JS Cadenas JS Métodos de cadena JS Búsqueda de cadenas JS Plantillas de cadena JS Números JS Métodos numéricos JS Matrices JS Métodos de matriz JS Clasificación de matriz JS Iteración de matriz JS Constante de matriz JS Fechas JS Formatos de fecha JS Métodos de obtención de fecha JS Métodos de configuración de fechas JS Matemáticas JS JS al azar Booleanos JS Comparaciones JS Condiciones JS Interruptor JS Bucle JS para Bucle JS para entrada Bucle JS para de Bucle JS mientras descanso JS Iterables JS Conjuntos JS Mapas JS JS Tipo de Conversión de tipo JS JS bit a bit JS expresión regular Errores JS Alcance JS JS Elevación Modo estricto JS JS esta palabra clave Función de flecha JS Clases JS JSJSON Depuración JS Guía de estilo JS Prácticas recomendadas de JS Errores JS Rendimiento JS Palabras reservadas de JS

Versiones JS

Versiones JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Borde Historia de JS

Objetos JS

Definiciones de objetos Propiedades del objeto Métodos de objeto Visualización de objetos Accesores de objetos Constructores de objetos Prototipos de objetos Objeto iterables Conjuntos de objetos Mapas de objetos Referencia de objeto

Funciones JS

Definiciones de funciones Parámetros de función Invocación de función Llamada de función Función Aplicar Cierres de funciones

Clases JS

Introducción a la clase Herencia de clase Clase estática

JS asíncrono

Devoluciones de llamada JS JS asíncrono Promesas JS JS asíncrono/espera

JS HTML DOM

Introducción al DOM Métodos DOM Documento DOM Elementos DOM DOM HTML Formularios DOM DOM CSS Animaciones DOM Eventos DOM Oyente de eventos DOM Navegación DOM Nodos DOM Colecciones DOM Listas de nodos DOM

Lista de materiales del navegador JS

Ventana JS Pantalla JS Ubicación de JS Historia de JS Navegador JS Alerta emergente JS Tiempo JS Galletas JS

API web de JS

Introducción a la API web API de formularios web API de historial web API de almacenamiento web API de trabajo web API de búsqueda web API de geolocalización web

JS AJAX

Introducción a AJAX AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

JSJSON

Introducción JSON Sintaxis JSON JSON frente a XML Tipos de datos JSON Análisis JSON Cadena JSON Objetos JSON Matrices JSON Servidor JSON JSONPHP JSONHTML JSON JSONP

JS frente a jQuery

Selectores jQuery HTML de jQuery CSS de jQuery DOM de jQuery

Gráficos JS

Gráficos JS Lienzo JS JS Trazado Gráfico JS.js Gráfico de Google JS JS D3.js

Ejemplos de JS

Ejemplos de JS JS HTML DOM Entrada HTML JS Objetos JS HTML Eventos JS HTML Navegador JS Editor JS Ejercicios JS Prueba JS Certificado JS

Referencias JS

Objetos JavaScript Objetos HTML DOM


JavaScript asíncrono

"¡Terminaré más tarde!"

Las funciones que se ejecutan en paralelo con otras funciones se denominan asincrónicas.

Un buen ejemplo es JavaScript setTimeout()

JavaScript asíncrono

Los ejemplos utilizados en el capítulo anterior, fue muy simplificado.

El propósito de los ejemplos era demostrar la sintaxis de las funciones de devolución de llamada:

Ejemplo

function myDisplayer(something) {
  document.getElementById("demo").innerHTML = something;
}

function myCalculator(num1, num2, myCallback) {
  let sum = num1 + num2;
  myCallback(sum);
}

myCalculator(5, 5, myDisplayer);

En el ejemplo anterior, myDisplayeres el nombre de una función.

Se pasa a myCalculator()como un argumento.

En el mundo real, las devoluciones de llamada se usan con mayor frecuencia con funciones asíncronas.

Un ejemplo típico es JavaScript setTimeout().


Esperando un tiempo de espera

Al usar la función de JavaScript setTimeout(), puede especificar una función de devolución de llamada para que se ejecute en el tiempo de espera:

Ejemplo

setTimeout(myFunction, 3000);

function myFunction() {
  document.getElementById("demo").innerHTML = "I love You !!";
}

En el ejemplo anterior, myFunctionse utiliza como devolución de llamada.

myFunctionse pasa a setTimeout()como un argumento.

3000 es el número de milisegundos antes del tiempo de espera, por myFunction()lo que se llamará después de 3 segundos.

Cuando pase una función como argumento, recuerde no usar paréntesis.

Derecha: setTimeout(myFunction, 3000);

Incorrecto:setTimeout(miFunción(), 3000);

En lugar de pasar el nombre de una función como argumento a otra función, siempre puedes pasar una función completa en su lugar:

Ejemplo

setTimeout(function() { myFunction("I love You !!!"); }, 3000);

function myFunction(value) {
  document.getElementById("demo").innerHTML = value;
}

En el ejemplo anterior, function(){ myFunction("I love You !!!"); } se utiliza como devolución de llamada. Es una función completa. La función completa se pasa a setTimeout() como argumento.

3000 es el número de milisegundos antes del tiempo de espera, por myFunction()lo que se llamará después de 3 segundos.


Intervalos de espera:

Al usar la función de JavaScript setInterval(), puede especificar una función de devolución de llamada que se ejecutará para cada intervalo:

Ejemplo

setInterval(myFunction, 1000);

function myFunction() {
  let d = new Date();
  document.getElementById("demo").innerHTML=
  d.getHours() + ":" +
  d.getMinutes() + ":" +
  d.getSeconds();
}

En el ejemplo anterior, myFunctionse utiliza como devolución de llamada.

myFunctionse pasa a setInterval()como un argumento.

1000 es el número de milisegundos entre intervalos, por myFunction()lo que se llamará cada segundo.


Esperando Archivos

Si crea una función para cargar un recurso externo (como un script o un archivo), no puede usar el contenido antes de que esté completamente cargado.

Este es el momento perfecto para usar una devolución de llamada.

Este ejemplo carga un archivo HTML ( mycar.html) y muestra el archivo HTML en una página web, después de que el archivo esté completamente cargado:

Esperando un archivo:

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}

function getFile(myCallback) {
  let req = new XMLHttpRequest();
  req.open('GET', "mycar.html");
  req.onload = function() {
    if (req.status == 200) {
      myCallback(this.responseText);
    } else {
      myCallback("Error: " + req.status);
    }
  }
  req.send();
}

getFile(myDisplayer);

En el ejemplo anterior, myDisplayerse utiliza como devolución de llamada.

myDisplayerse pasa a getFile()como un argumento.

A continuación se muestra una copia de mycar.html:

micoche.html


<img src="img_car.jpg" alt="Nice car" style="width:100%">

<p>A car is a wheeled, self-powered motor vehicle used for transportation.
Most definitions of the term specify that cars are designed to run primarily on roads, to have seating for one to eight people, to typically have four wheels.</p>

<p>(Wikipedia)</p>