itemtype='https://schema.org/WebPage' itemscope='itemscope' class="page-template-default page page-id-3692 page-child parent-pageid-3625 ast-desktop ast-separate-container ast-right-sidebar astra-4.6.14 ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-normal-title-enabled">

004. AJAX: API Fetch + Async-Await

En este capítulo hacemos el mismo ejercicio que en el capítulo anterior pero con las funciones asíncronas, veamos la sintaxis de los dos archivos que hemos de crear, peticionesasincronas.html y peticionesasincronas.js.

Sintaxis de peticionesasincronas.html.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Peticiones asíncronas</title>
  </head>
  <body>
    <h1>Ajax</h1>
    <h2>Peticiones asíncronas</h2>
    <ol id="fetch-async"></ol>
    <script src="./03peticionesasincronas.js"></script>
  </body>
</html>

Sintaxis de peticionesasincronas.js.

(() => {
  const $fetchAsync = document.getElementById("fetch-async"),
    $fragment = document.createDocumentFragment();

  async function getData() {
    try {
      let res = await fetch("https://jsonplaceholder.typicode.com/user"),
        json = await res.json();
      if (!res.ok)
        throw {
          status: res.status,
          statusText: res.statusText,
        };
      json.forEach((el) => {
        const $li = document.createElement("li");
        $li.innerHTML = `${el.name} -- ${el.email} -- ${el.phone}`;
        $fragment.appendChild($li);
      });
      $fetchAsync.appendChild($fragment);
    } catch (err) {
      let message = err.statusText || "Ocurrió un error";
      $fetchAsync.innerHTML = `Error ${err.status}: ${message}`;
    } finally {
      console.log(
        "Lo que está en finally se ejecuta independientemente del try catch"
      );
    }
  }
  getData();
})();
Scroll al inicio