Advertisement
ucielsola

Tutorial Promises - Uciel Sola

Apr 25th, 2022
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.35 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.     <head>
  4.         <meta charset="UTF-8" />
  5.         <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6.         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7.         <title>Tutorial Promises - Uciel Sola</title>
  8.     </head>
  9.     <style>
  10.         * {
  11.             margin: 0;
  12.             padding: 0;
  13.             font-size: 1.5rem;
  14.             font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
  15.                 Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
  16.             color: #fff;
  17.             border-color: #fff;
  18.         }
  19.  
  20.         html,
  21.         body {
  22.             height: 100%;
  23.         }
  24.  
  25.         body {
  26.             display: flex;
  27.             align-items: center;
  28.             justify-content: center;
  29.             background-color: rgb(56, 56, 56);
  30.         }
  31.  
  32.         input {
  33.             color: #000;
  34.             padding: 0.25rem;
  35.             border-radius: 0.25rem;
  36.         }
  37.  
  38.         input[type="submit"] {
  39.             background-color: rgb(56, 56, 56);
  40.             color: #fff;
  41.             cursor: pointer;
  42.         }
  43.  
  44.         .contenedor {
  45.             display: grid;
  46.             place-content: center;
  47.             min-height: 30vh;
  48.         }
  49.  
  50.         .row {
  51.             display: flex;
  52.         }
  53.  
  54.         .row * {
  55.             margin-inline: 0.25rem;
  56.         }
  57.  
  58.         .contenedor * {
  59.             margin-block: 0.5rem;
  60.         }
  61.  
  62.         .hidden {
  63.             visibility: hidden;
  64.         }
  65.     </style>
  66.     <body>
  67.         <div class="contenedor">
  68.             <h1>Ingrese palabra secreta</h1>
  69.             <form class="row">
  70.                 <input type="text" /><input type="submit" value="Enviar" />
  71.             </form>
  72.             <h1>Estado de la operación:</h1>
  73.             <p>Sin datos...</p>
  74.         </div>
  75.     </body>
  76.  
  77.     <script>
  78.         const input = document.querySelector("input");
  79.         const estado = document.querySelector("p");
  80.         const form = document.querySelector("form");
  81.  
  82.         form.addEventListener("submit", (event) => formSubmit(event));
  83.  
  84.         function formSubmit(event) {
  85.             event.preventDefault();
  86.  
  87.             const input = event.target[0];
  88.             estado.innerHTML = "Revisando palabra...";
  89.  
  90.             APIPalabraSecreta(input.value)
  91.                 .then((res) => (estado.innerHTML = res))
  92.                 .catch((err) => {
  93.                     estado.innerHTML = err;
  94.                     input.focus();
  95.                 });
  96.         }
  97.  
  98.         // esto que sigue sucedería en un backend / API
  99.  
  100.         function APIPalabraSecreta(palabra) {
  101.             const secreto = "javascript";
  102.  
  103.             return new Promise((resolve, reject) => {
  104.                 // simulamos 3 segundos de demora
  105.                 setTimeout(() => {
  106.                     if (palabra === secreto) {
  107.                         resolve("Palabra correcta!");
  108.                     } else {
  109.                         reject("Palabra incorrecta!");
  110.                     }
  111.                 }, 3000);
  112.             });
  113.         }
  114.     </script>
  115. </html>
  116.  
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement