javascriptpromisepromise.all

Issue Promise.all()


I want to declare an array of empty promises
then resolve them manually, but it is not working ?

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

I DO NOT WANT to do it like this :

const tab = [1]
let promises = tab.map(e => new Promise((resolve) => { 
  setTimeout(() => {
    resolve()
  }, 3000);
}))

Promise.all(promises)
  .then(e => console.log("finished"))

Solution

  • Thats the closest you can get:

    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"))