作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Angular 6:如何使用 forkJoin 识别 api 的响应
reqs = [];
if (shouldUpdatePhone) {
reqs.push(this.customerService.updatePhone(phoneUpdateRequest))
}
if (shouldUpdateAddress) {
reqs.push(this.customerService.updateAddress(addressUpdateRequest))
}
forkJoin(reqs).subscribe(result => {
console.log('result :', result);
//How to know response is from updatePhone and response from updateAddress?
});
如何识别收到的响应属于 updatePhone 和 updateAddress?基于标识,我需要向用户显示消息。
这两个 api 返回数组(2) >
{model:true, code:200, message:null},
{model:true, code:200, message:null}
最佳答案
您可以在每次请求后使用 map
管道将您的响应包装在另一个标识其类型的对象中。就像这样:
reqs = [];
if (shouldUpdatePhone) {
reqs.push(this.customerService.updatePhone(phoneUpdateRequest)
.pipe(map(value => ({type: 'phone', value: value})))
.pipe(catchError(value => of({type: 'phone', failed: true}))))
}
if (shouldUpdateAddress) {
reqs.push(this.customerService.updateAddress(addressUpdateRequest)
.pipe(map(value => ({type: 'address', value: value})))
.pipe(catchError(value => of({type: 'address', failed: true}))))
}
forkJoin(reqs).subscribe(results => {
console.log('result :', results);
for(let result of results){
if(result.type == 'phone'){
if(result.failed)
console.log("Phone failed");
else
console.log("Phone: " + result.value);
}
else if(result.type == 'address'){
if(result.failed)
console.log("Address failed");
else
console.log("Address: " + result.value);
}
}
});
关于 Angular 6 : How to identify forkJoin response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009568/
我是一名优秀的程序员,十分优秀!