我有一个这样的方法:
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。
我遗漏了什么?有没有办法实现这种承诺链呢?
发布于 2018-09-12 20:16:26
感谢@charlietfl询问我是否真的使用doSomeRequests(..).then().catch()。事实证明我没有,我无意中做了doSomeRequests(..).then().then(),但不知何故我确信我需要在“复杂的”承诺链中寻找错误。
无论如何,对于这个无用的问题,我很抱歉,谢谢你的帮助。
发布于 2018-09-12 20:33:08
您需要确保map调用返回一个promises列表,通过async/await简化,您将获得大致内容:
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);
https://stackoverflow.com/questions/52294755
复制相似问题