我如何减少多个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