Javascript 如何处理未兑现的承诺
我有一个对象数组,并使用Promise.all将Api调用返回的值映射到每个对象上的特定属性 初始调用如下所示:Javascript 如何处理未兑现的承诺,javascript,es6-promise,Javascript,Es6 Promise,我有一个对象数组,并使用Promise.all将Api调用返回的值映射到每个对象上的特定属性 初始调用如下所示: Promise.all(jobs.map(job => convertItemsl(job))) .then( doSomething() }); }) .catch(err) function convertItemsl (job){ return myApi.getItem(job.id).then( r
Promise.all(jobs.map(job => convertItemsl(job)))
.then(
doSomething()
});
})
.catch(err)
function convertItemsl (job){
return myApi.getItem(job.id).then( response => {
const name = response.name ? response.name : ‘’;
return {
name: name,
status: job.status
};
}
)
}
API调用:
getItem(){
return super.get('jobs').then(res => res.json());
}
我遇到的问题是,在某些调用中,Api可能会返回not found
在按照数组对Api进行所有调用之后,我想继续并返回映射对象,不管怎样。我的猜测是
myApi。getItem
拒绝了它的承诺。你需要以某种方式抓住这种拒绝:
function convertItemsl (job){
return myApi.getItem(job.id).then( response => {
const name = response.name ? response.name : ‘’;
return {
name: name,
status: job.status
};
}
).catch(err => {
return {
name: null,
// err.code or whatever your error looks like, maybe just 404
status: err.code
}
})
}
您能否发布
myApi.getItem
的代码,包括它使用的promise库?如果未找到“returning”(返回),则应以任何方式解决convertItemsl
中的承诺。只有一些项目未找到。您可以发布myApi.getItem
的代码,包括它使用的承诺库吗?“预计会有Api返回未找到的情况”-在这些情况下,您想做什么?当Api没有返回find时,它会做什么呢?它会返回其他东西,还是拒绝承诺?它不应该挂起。可能是我的副本实际上是在您提到的同一个地方捕获错误。。。只是没有归还任何东西。我能理解在这种情况下你为什么要退货