promiseTimeout es como un setTimeout cualquiera, con la diferencia de que retorna una promesa

Overview

promiseTimeout

promiseTimeout se encarga de ejecutar una "función de vuelta" (conocida como callback) luego de un tiempo específicado, exactamente como lo hace el "setTimeout", a diferencia de que promiseTimeout retorna una promesa, lo que nos permite tener de manera más comoda el control de la asincronía al usar un "timeout". Aunque deben tener en cuenta que este no retorna lo que conocemos como el timeoutID, por lo que no podrá usar un "clearTimeout()".


📝 Pre-Requisitos

  • Git Lo usaremos para clonar el repositorio.

🔧 Instalación

Diríjase al proyecto en que desea implementarlo, abra su terminal y realice un:

git clone 'https://github.com/OWLjz18/promiseTimeout.git'

🔎 Uso

Sintaxis:

promiseTimeout(funcion[, tiempo, error]);
  • funcion => Es la función que se ejecutará (callback) luego del tiempo indicado.
  • tiempo? => Es el tiempo en milisegundos que se demorará promiseTimeout en ejecutar la función, sino se establece ningúno se ejecutará inmediatamente.
  • error? => Este parámetro opcional indica si se lanzará un error o no, por defecto viene establecido en false, si lo establece en true, se arrojará un error. La funcionalidad de este parámetro es permitirle a usted prácticar el manejo de errores.

Ejemplo:

promiseTimeout se puede utilizar de la misma forma que el setTimeout, pero estaríamos desperdiciando o (ignorando) el uso para el que fué creado, el cuál es poder trabajar de forma "síncrona" al hacer uso de un "timeout". Veamos las dos formas de manejar la asincronía mediante un ejemplo:

Comencemos creando un archivo en la raíz del proyecto, en mi caso lo nombraré "code.js" en el hay que importar el "promiseTimeout", si al instalarlo lo posicionó en la raíz de su proyecto, así se vería la importación:

import promiseTimeout from './promiseTimeout/src/promiseTimeout.js';

Forma #1: Usando la sintaxis de promesas:

import promiseTimeout from './promiseTimeout/src/promiseTimeout.js';

console.log('HTML');

promiseTimeout(() => console.log('CSS'), 2000)
  .then(() => console.log('Javascript'))
  .catch(error => console.error(error));

Forma #2: Usando la sintaxis de async/await.

import promiseTimeout from './promiseTimeout/src/promiseTimeout.js';

( async () => {
  
  console.log('HTML');
  await promiseTimeout(() => console.log('CSS'), 2000);
  console.log('Javascript');
  
})();

En el caso de la segunda forma como hacemos uso de "async/await" necesitamos estar dentro de una función async, por lo que hice uso de las funciones autoinvocadas para crear una especie de "envoltorio", pero si usted está dentro de una función o un evento asíncrono puede ignorar ese "envoltorio", le daré un ejemplo para aplicarlo en un evento asíncrono.

Imaginemos que tenemos esto en nuestro HTML:

Click aquí">
<button id="boton">Click aquíbutton>
import promiseTimeout from './promiseTimeout/src/promiseTimeout.js';

const boton = document.getElementById('boton');

boton.addEventListener('click', async () => {
  
  console.log('HTML');
  await promiseTimeout(() => console.log('CSS'), 2000);
  console.log('Javascript');

});

NOTA: Recuerden que para el manejo de errores con async/await pueden hacer uso de try...catch

Cómo resultado de los tres ejemplos anteriores veran por consola:

  1. HTML
  2. CSS (Luego de dos segundos)
  3. Javascript

NOTA: En muchos foros ya se encuentra una solución como esta const delay = (callback, ms) => new Promise( res => setTimeout(() => res(callback()), ms) ); a la hora de usar promesas con un setTimeout, pero yo quise crear mi propia función con errores personalizados y un tanto mas legible.


🦉 Autor


🤝 Apoyo

Si te gusta el proyecto puedes comentarle a otros sobre él y regalarnos una 🌟 .


📃 Licencia

Este proyecto esta bajo una licencia MIT, visite el archivo LICENSE.md para obtener mas información sobre dicha licencia.

You might also like...

Apenas uma página que exibe um countdown com a data em que Bolsonaro sai da presidência e tem seu sigilo de 100 anos quebrado

Apenas uma página que exibe um countdown com a data em que Bolsonaro sai da presidência e tem seu sigilo de 100 anos quebrado

Chá de revelação - Sigilo de 100 anos Descrição Apenas uma página que exibe um countdown com a data em que Bolsonaro sai da presidência e tem seu sigi

Nov 6, 2022

Questi sono i miei plugin del cazzo, scritti col culo, ma con tanto amore. 50 euro.

ReaperianiJS Questi sono i miei plugin del cazzo, scritti col culo, ma con tanto amore. 50 euro. Spiegone: Il fuorilavoce è un plugin di eq M/S (mid s

Feb 11, 2022

Codigo del Webinar de Organizador de Tareas con autenticación

Webinar Organizador de Tareas con autenticación Bienvenido al repositorio 📂️ del Webinar donde podrás encontrar el codigo expuesto 🤓️ Para comenzar

Jun 24, 2022

Un experimento personal con el portal del Centro de Documentación de la Imagen de Santander.

Un experimento personal con el portal del Centro de Documentación de la Imagen de Santander.

Retrosantander Un experimento personal con el portal del Centro de Documentación de la Imagen de Santander (CDIS) y sus contenidos. Por Jaime Gómez-Ob

Dec 11, 2022

Este repositorio contendrá el proyecto final de Angular con temática de Pokemon Unite

ProyectoFinal This project was generated with Angular CLI version 14.0.2. Development server Run ng serve for a dev server. Navigate to http://localho

Jun 19, 2022

📂 Listado de empresas con trabajos tecnológicos dentro de la Región de Murcia.

📂 Murcia Tech Hub Listado de empresas con trabajos tecnológicos dentro de la Región de Murcia. Si conoces alguna empresa más o puedes poner algún dat

Jun 30, 2022

Repositorio sobre arrays con información y ejemplos.

Arrays Repositorio sobre arrays con información y ejemplos. 1)Para poder utilizar el repositorio correctamente es necesario que se eliminen los coment

Sep 14, 2022

Vamos a realizar un juego muy sencillo en TypeScript, posteriormente lo vamos a desplegar en Microsoft Azure con Servicio de Azure Static Web Apps.

Vamos a realizar un juego muy sencillo en TypeScript, posteriormente lo vamos a desplegar en Microsoft Azure con Servicio de Azure Static Web Apps.

Taller TypeScript Descripción Vamos a realizar un juego muy sencillo en TypeScript, posteriormente lo vamos a desplegar en Microsoft Azure con Servici

Oct 10, 2022

Repositorio del video de YouTube sobre creación y generación de imágenes de docker con Node

Importante Tener instalado Docker Desktop!!! Comandos usados Login de Docker Hub docker login Generar la imagen, especificar el TAG (-t) y el punto s

Oct 27, 2022
Owner
Jose Zambrano
"Quién tiene un porqué puede con cualquier cómo" 💚
Jose Zambrano
Workshop contruyendo una API Rest con Node.js + Koa.js

Workshop contruyendo una API Rest con Node.js + Koa.js Tabla de Contenido Acerca de Introducción Explicación del caso de uso Ciclo de vida de las soli

Jhony Rivero 6 Apr 8, 2022
Haciendo una aplicación del tiempo ☁️ con #Angular 13 🅰️

Angular Boilerplate Boilerplate para trabajar con Angular, este proyecto listo para trabajar las pruebas unitarias con Jestjs y eslint. Este proyecto

DOMINICODE 4 Apr 20, 2022
Olá, este repositório, é um mini-relatório do que eu aprendi através de cursos de JavaScript. Este repositório, muito provável que fique familiar com o que os professores ensinam .

About Project Olá pessoal, este repositório tem o objetivo de relatar meus aprendizados dos cursos que fiz sobre a linguagem JavaScript. Não só com o

Nior 6 Jul 10, 2022
Konbini Otaku, Web E-Commerce del proyecto Estación Otaku, desarrollada con Next.js y desplegada con Vercel

Konbini Otaku ?? ?? ⛩️ ?? - Reto Final (parte 2) Este proyecto constó de proponer "Konbini Otaku", la cual es una tienda virtual en la que podrás adqu

null 2 Apr 28, 2022
Breve explicacion de Mongoose, asi como un codigo con las operaciones CRUD

Introduccion a Mongoose ¿Qué es MongoDB? MongoDB es una base de datos NoSQL (Not Only SQL) y por ende no relacional que es utilizado para proyectos we

Jair León 9 Mar 17, 2022
La extensión web que muestra el precio de los juegos de la web de Xbox, PlayStation, Nintendo y Epic Games Store con los impuestos de Argentina incluidos. Conocé cuanto vas a pagar por tus juegos 💚💙❤️

Conocido anteriormente como Xboxito Impuestito - Conocé el precio real de los juegos Impuestito calcula y muestra el precio de los juegos de la web de

Luke ✨ 23 Dec 4, 2022
O projeto MKS Sistemas tem como objetivo o desenvolvimento de uma aplicação em React que utilize endpoint da API de produtos fornecida pela própria MKS Sistemas.

MKS front-end Descrição O projeto MKS Sistemas tem como objetivo o desenvolvimento de uma aplicação em React que utilize endpoint da API de produtos f

Rodrigo William 4 Jul 21, 2022
El repositorio de cheatsheets de TIC. Pensado para que los alumnos puedan utilizar a la hora de programar como "ayudamemorias".

Cheatsheets de TIC Este es el repositorio de la web de cheatsheets de TIC. Para acceder a la web hacer click acá. ¿Cómo hago un cambio? ¿Mi cambio tie

null 37 Nov 10, 2022
Hola bienvenido al the LoliBot-MD aquí se hacer actualizaciónes de bot. Bot que funciona el (WhatsApp multidivice) espero que te guste😊

Esta versión de THE LOLIBOT-MD casi está terminada. ✨ —◉ DUDAS SOBRE EL BOT?, CONTACTAME ✨ Quieres tener un bot 24/7 activo ?? ACTIVAR EN HEROKU ☂️ PA

The Lolibot-MD 34 Dec 26, 2022