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

93
Views
Emitir Promise.all()

Quiero declarar una serie de promesas vacías
luego resolverlos manualmente, pero no funciona?

 const tab = [1] let promises = tab.map(e => new Promise(() => { })) setTimeout(() => { promises[0] = Promise.resolve() }, 3000); Promise.all(promises) .then(e => console.log("finished"))

NO QUIERO hacerlo así:

 const tab = [1] let promises = tab.map(e => new Promise((resolve) => { setTimeout(() => { resolve() }, 3000); })) Promise.all(promises) .then(e => console.log("finished"))
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Eso es lo más cerca que puedes estar:

 const tab = [1] let resolves = [] let promises = tab.map(e => new Promise((resolve) => { resolves.push(resolve) })) setTimeout(() => { resolves[0]() }, 3000); Promise.all(promises).then(e => console.log("finished"))
about 4 years ago · Juan Pablo Isaza Report

0

Aquí hay una técnica que usa una función deferred reutilizable que le permite controlar externamente una promesa. Extendemos la funcionalidad de resolve y reject , lo que permite un mejor control para la persona que llama. Este es un patrón algo poco convencional, pero hay ventajas en explotar las promesas de esta manera. Consulte estas preguntas y respuestas para ver un ejemplo detallado:

 function deferred () { let resolve, reject, promise = new Promise((res, rej) => { resolve = res; reject = rej }) return { promise, resolve, reject } } const tasks = [ deferred(), deferred(), deferred() ] // 3 "deferrred" objects Promise.all(tasks.map(t => t.promise)).then(console.log, console.error) setTimeout(_ => tasks[0].resolve("one"), 1000) setTimeout(_ => tasks[1].resolve("two"), 2000) setTimeout(_ => tasks[2].resolve("three"), 3000)

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!