Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

73
Views
Imprimiendo 5 a 0 números en el intervalo de 2 segundos cada uno usando Promesas

Soy nuevo en JavaScript y estaba aprendiendo sobre promesas. Quiero imprimir de 5 a 0 números en un intervalo de 2 segundos cada uno. Por ejemplo, por primera vez después de 2 segundos imprime 5 y luego después de 2 segundos imprime 4 y así sucesivamente. He escrito un código para hacerlo, pero no puedo obtener el resultado correcto.

 var count = 5; var i = 2; function d() { let p = new Promise((resolve,reject)=>{ while(count>=0) { setTimeout(resolve,i*1000,count); i= i*2; count = count-1; //count = count-1; } }); return p; } d().then((x)=>{ console.log(x); });

Muestra la salida como 5. ¿Alguien puede corregirlo?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Es mucho más fácil escribir esto usando la sintaxis async ... await ... luego puede crear una función de pause que retrasará el tiempo de espera en milisegundos. Podemos envolver esto en una instrucción while , haciendo un bucle hasta que el conteo sea cero.

 async function pause(timeout) { return new Promise(resolve => setTimeout(resolve, timeout)) } async function countDown(count) { while (count > 0) { await pause(2000); console.log('count:', count); count--; } } countDown(5);

about 4 years ago · Juan Pablo Isaza Report

0

Siempre que esté escribiendo un programa, es una buena idea cuantificar qué es lo que necesita para realizar un seguimiento.

En este caso tenemos tres componentes.

  1. Queremos hacer algo en cada "tick" y queremos saber en qué "tick" estamos.
  2. Queremos contar hacia atrás desde un número específico hasta que estemos en 0.
  3. Cada "tick" debe estar separado por una cantidad de tiempo determinada.

Un for..loop básico nos permite recorrer el rango de números y poner en cola algunas llamadas setTimeout con nuestra devolución de llamada:

 /** * CountDown * * @param {Function} callback - The callback is a function that we call each "tick" * @param {number} countDownFrom - The countdown starts at this number * @param {number} interval - the number of milliseconds between each "tick" */ function CountDown( callback, countDownFrom, interval ) { for (var count = 0; count <= countDownFrom; count++) { setTimeout(callback, (countDownFrom - count) * interval, count); } } CountDown( (x) => { console.log(x); }, 5, 2 * 1000 );

He puesto algunos enlaces a www.w3schools.com en esta respuesta. Allí puede encontrar documentación y tutoriales para muchos problemas de JavaScript.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!