How do I reduce multiple Promise.all?

I am trying to use a Promise.all inside of a reduce and cannot get my function to work, unless there is only one user in my array. The starting object of the reduce is a Promise . The first time through the reduce , the Promise has .all available on it. The second time through, the .all is not available.

return UserQueries.addUsersOnCasefileCreate(input).then(users => {
  return users.reduce((promise, user) => {
    return promise.all([
      AddressQueries.addAddress(user.address, user.userId, input.orgId),
      EmailQueries.addEmail(user.emails, user.userId, input.orgId),
      PhoneQueries.addPhones(user.phones, user.userId, input.orgId)
    ])
    .then(() => Promise.resolve(user))
  }, Promise);
})

How could I perform this operation?


You initialize with Promise which is a function, though return a resolved Promise object, where the two are not the same.

You can initialize with Promise.resolve() , call promise.then() , then return Promise.all() with .then() chained within first .then() , which passes Promise object to next iteration at .reduce() .

return UserQueries.addUsersOnCasefileCreate(input).then(users => {
  return users.reduce((promise, user) => {
    return promise.then(() => Promise.all([
      AddressQueries.addAddress(user.address, user.userId, input.orgId),
      EmailQueries.addEmail(user.emails, user.userId, input.orgId),
      PhoneQueries.addPhones(user.phones, user.userId, input.orgId)
    ]))
    .then(() => user))
  }, Promise.resolve());
})

There's no need to use reduce() . Just map the things and wait them all.

return UserQueries.addUsersOnCasefileCreate(input).then(users => {
  return Promise.all(users.map((user) => {
    return Promise.all([
      AddressQueries.addAddress(user.address, user.userId, input.orgId),
      EmailQueries.addEmail(user.emails, user.userId, input.orgId),
      PhoneQueries.addPhones(user.phones, user.userId, input.orgId)
    ]);
  }));
});
链接地址: http://www.djcxy.com/p/1630.html

上一篇: 如何使用Spotify Web API按名称搜索用户

下一篇: 我如何减少多个Promise.all?