Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Pedir datos con fetch

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

Pedir en el bar y esperar

En el bar pides un café y esperas. Mientras, el camarero atiende a otros. Cuando está listo, te llama.

Una página hace lo mismo con los datos. Los pide a un servidor, sigue funcionando y los enseña cuando llegan.

Palabras clave

PalabraQué significaEjemplo
APIUna dirección de un servidor que te da datos si se los pides./api/menu
fetchLa orden de JavaScript para pedir datos a una dirección.fetch('/api/menu')
RespuestaLo que devuelve el servidor. Tiene un estado y unos datos.response.status
PromesaAlgo que no está listo todavía pero lo estará más tarde.Promise
async y awaitAwait espera a una promesa. Solo se puede usar dentro de una función async.await fetch(url)
EstadoUn número que dice cómo fue la petición.200

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Esperar sin pararse

Pedir datos por internet tarda. Un programa no puede quedarse congelado, así que JavaScript usa promesas.

Con await esperas a que una promesa termine, y solo dentro de esa función. Todo lo demás sigue en marcha.

Pruébalo: esperar un café

Código: node
// Una promesa es algo que terminará más tarde.
function waitFor(milliseconds) {
  return new Promise(function (resolve) {
    setTimeout(resolve, milliseconds);
  });
}

async function run() {
  console.log('Pido el café...');
  await waitFor(1000);
  console.log('Ya está el café.');
}

run();
console.log('Mientras tanto, sigo con lo mío.');

La llamada de verdad

Así se pide un menú a un servidor. Primero fetch da la respuesta. Después response.json() lee los datos, y también tarda, por eso lleva su await.

Este bloque no se ejecuta. Aquí no hay servidor al que llamar.

Una llamada con fetch

Código: node
// Esto es lo que escribirías con un servidor de verdad.
// Aquí no se ejecuta, porque no hay servidor al que llamar.
async function loadMenu() {
  const response = await fetch('https://api.ejemplo.es/menu');
  const menu = await response.json();
  console.log(menu);
}

loadMenu();

Pruébalo: un menú de un servidor de mentira

Código: web
<h1>Menú del día</h1>
<p id="state"></p>
<ul id="menu"></ul>

Ejemplo resuelto: los estados más comunes

EstadoQué significaresponse.ok
200Todo bien, aquí están los datostrue
404Esa dirección no existefalse
500El servidor ha falladofalse
(sin respuesta)No hay red: fetch da un errorNo llega a haber respuesta

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Repaso rápido: fetch

Inténtalo

Repaso rápido: fetch

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

7 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.