Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
esperar a que se complete todo lo prometido y luego ejecutar el resto del código

Tengo este código, quiero que el código se ejecute durante las primeras 3 pulsaciones, en la ejecución de la cuarta pulsación debe esperar a que se completen todas las promesas y luego continuar con la ejecución. No estoy seguro de si Promise.all es la forma correcta o si hay algún problema con la lógica.

 var counter = 1; function TaskRunner(concurrency) { this.concurrency = concurrency; this.waitList = []; } TaskRunner.prototype.push = async function (task) { let currentPromise = 'promise'+counter; if(counter <= this.concurrency) { this[currentPromise] = new Promise((resolve) => { resolve(task()); }); this[currentPromise].then(() => { console.log('completed: ', currentPromise); }).catch((e) => { console.log('failed: ', currentPromise); }); this.waitList.push(this[currentPromise]); counter++; return; } if (counter === this.concurrency + 1) { return await Promise.all([this.waitList]).then((values) => { console.log('all resolved: ', values); task(); counter++; }).catch(() => console.log('error')); } if (counter > this.concurrency) { counter++; task(); return; } return; }; function exampleTask() { setTimeout(() => console.log('done'), 5000); } var r = new TaskRunner(3); r.push(exampleTask); r.push(exampleTask); r.push(exampleTask); r.push(exampleTask); // want to wait here for all promise to complete and then continue r.push(exampleTask);
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda