Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-如何减少多个Promise.all?_Javascript_Promise_Reduce - Fatal编程技术网

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()
的目的是什么?