我如何减少多个Promise.all?
我试图用一个Promise.all内部的reduce ,不能让我的function工作,除非只有一个在我的阵列的用户。 reduce的起始目标是一个Promise 。 第一次通过reduce的Promise有.all的可供使用。 第二次通过, .all不可用。
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);
})
我怎么能执行这个操作?
你用一个函数Promise初始化,但是返回一个已解析的Promise对象,其中两个不一样。
你可以用初始化Promise.resolve()调用promise.then()然后返回Promise.all()用.then()首先在链接的.then()它通过Promise在对象下一次迭代.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());
})
没有必要使用reduce() 。 只需映射这些东西并全部等待。
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/1629.html
