我有一个对象数组,并使用Promise.all映射每个对象上特定属性的Api调用返回的值
初始调用如下所示:
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。
在按照数组调用Api之后,我想继续并返回映射对象,无论如何。
答案 0 :(得分:1)
我的猜测是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
}
})
}