首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内含promise链的Promise.all

内含promise链的Promise.all
EN

Stack Overflow用户
提问于 2018-09-12 20:05:45
回答 2查看 143关注 0票数 1

我有一个这样的方法:

代码语言:javascript
复制
doSomeRequests(listOfRequestParameters) {
  let requests = listOfRequestParameters.map(parmeter => {
    return axios.get(url + parmeter)
    .then(data => {
      const parameters= data.parameters;
      return axios.delete(url, parameters)
    })
  })
  return Promise.all(requests);
}

在这个函数中,我希望为列表(listOfRequestParameters)中的每个元素完成API请求,但对于列表中的每个元素,我必须执行两个API请求。

axios方法都返回Promise。

问题是我确实捕获了Promise返回的fail方法的结果,但是如果一个doSomeRequests请求失败,我会得到一个UnhandledPromiseRejectionWarning。

我遗漏了什么?有没有办法实现这种承诺链呢?

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 20:16:26

感谢@charlietfl询问我是否真的使用doSomeRequests(..).then().catch()。事实证明我没有,我无意中做了doSomeRequests(..).then().then(),但不知何故我确信我需要在“复杂的”承诺链中寻找错误。

无论如何,对于这个无用的问题,我很抱歉,谢谢你的帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-09-12 20:33:08

您需要确保map调用返回一个promises列表,通过async/await简化,您将获得大致内容:

代码语言:javascript
复制
async doSomeRequests(listOfRequestParameters) {
  return Promise.all(listOfRequestParameters.map(async parmeter => {
    const data = await axios.get(url + parameter);
    const parameters = data.parameters;

    return axios.delete(url, parameters);
  }));
}

await doSomeRequests(listOfRequestParameters);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52294755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档