javascript-如何减少多个Promise.all?
我正在尝试使用javascript-如何减少多个Promise.all?,javascript,promise,reduce,Javascript,Promise,Reduce,我正在尝试使用承诺。所有都在reduce中,并且无法使我的函数运行,除非我的数组中只有一个用户。reduce的起始对象是一个Promise。第一次通过reduce,Promise具有。所有可用的。第二次通过时,.all不可用 return UserQueries.addUsersOnCasefileCreate(input).then(users => { return users.reduce((promise, user) => { return promise.al
承诺。所有都在reduce
中,并且无法使我的函数运行,除非我的数组中只有一个用户。reduce
的起始对象是一个Promise
。第一次通过reduce
,Promise
具有。所有可用的。第二次通过时,.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()
。然后()
首先链接到。然后()
,将Promise
对象传递到的下一个迭代
您可以使用函数Promise
进行初始化,但返回一个已解析的Promise
对象,其中两者不相同
您可以使用Promise.resolve()
进行初始化,调用Promise.then()
,然后使用返回Promise.all()
。然后()
首先链接到。然后()
,将Promise
对象传递到的下一个迭代
无需使用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)
]);
}));
});
无需使用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)
]);
}));
});
无论如何,promise
和promise
之间有一个明显的大小写错误。小写的promise
只是reduce
引用promise
作为初始对象的第一个参数。这不是打字错误。没有Promise.prototype.all()
。仅Promise.all()
。第一个参数中的Promise
是初始对象中的Promise
。这就是它第一次通过循环工作的原因。这就是为什么承诺。所有的一开始都是可用的。我对此表示怀疑。您正在调用一个不存在的函数。promise
和promise
之间存在明显的大小写错误。promise
是小写,它只是reduce
的第一个参数,引用promise
作为初始对象。这不是打字错误。没有Promise.prototype.all()
。仅Promise.all()
。第一个参数中的Promise
是初始对象中的Promise
。这就是它第一次通过循环工作的原因。这就是为什么承诺。所有的一开始都是可用的。我对此表示怀疑。您正在调用一个不存在的函数。我尝试了此操作,但只得到结果中的最后一个用户。我没有得到插入的其余用户。你说的“我没有得到插入的其余用户”是什么意思?如果预期结果是结果数组,则无需使用.reduce()
。使用.reduce()
的目的是什么?我尝试了这个方法,但只得到了结果中的最后一个用户。我没有得到插入的其余用户。你说的“我没有得到插入的其余用户”是什么意思?如果预期结果是结果数组,则无需使用.reduce()
。使用.reduce()
的目的是什么?