是否可以在 Promise.all 稍后向数组添加一个 Promise?

Posted

技术标签:

【中文标题】是否可以在 Promise.all 稍后向数组添加一个 Promise?【英文标题】:is it possible at Promise.all add later a Promise to Array? 【发布时间】:2020-02-20 20:05:33 【问题描述】:

我在做一个项目,我问自己在 javascript 中启动 Promise.all 是可行的,他们确实向数组添加了进一步的 Promise 以及它们是否也在运行?

【问题讨论】:

你的意思是在你的 Promise 数组中有一个 Promise 在你调用 Promise.all 之后附加另一个 Promise 吗? 喜欢:var PromiseAr = [] function func1() new Promise((resolve,reject) => PromiseAr.push(func1()) ); func1(); Promise.all(PromiseAr).then(() => console.log("done"); ) 【参考方案1】:
  const runAsyncFunctions = async () => 
  const users = await getUsers()

  if(users)
    Promise.all(
      users.map(async user => 
        const userId = await getIdFromUser(user)
        console.log(userId)

        const capitalizedId = await capitalizeIds(userId)
        console.log(capitalizedId)
      )
    )
      console.log(users)
  

【讨论】:

【参考方案2】:
var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve, reject) 
  setTimeout(resolve, 100, 'foo');
);

Promise.all([promise1, promise2, promise3]).then(function(values) 
  console.log(values);
);
promise.all() work like this...

【讨论】:

但是如果你有一个带有 Promise 的数组并在 Promise.all 工作时添加一个 Promise 怎么办

以上是关于是否可以在 Promise.all 稍后向数组添加一个 Promise?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Promise.all 时承诺之间的延迟

如何在 Nuxt 的 asyncData 中对 Promise.all 进行数组解构

如何正确处理 Promise.all:未定义

如何为一系列承诺数组做promise.all?

依次执行 Promise.all

为啥在 Promise.all() 之后不调用 onRejected,其中包含在数组中的 Promise.reject() 传递给 Promise.all()?