Angular 如何检查订阅期间可观察到的角度为5 RxJS的空结果?
RxJS在角度范围内可观测Angular 如何检查订阅期间可观察到的角度为5 RxJS的空结果?,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,RxJS在角度范围内可观测 this.myService.getEmp(personEmpId).subscribe( result => { this.personName = result.person_name; }, error => { console.log("EE:",error); } ); 如何测试我对该服务的订阅是否返回空结果,即未找到任何记录
this.myService.getEmp(personEmpId).subscribe(
result => {
this.personName = result.person_name;
},
error => {
console.log("EE:",error);
}
);
如何测试我对该服务的订阅是否返回空结果,即未找到任何记录
我尝试添加错误部分,但这没有触发控制台消息
目前,我似乎收到以下错误消息:
ERROR TypeError: "result is null"
如果您的方法返回
NULL
(未找到记录),则这不是错误。这仍然是一个有效的答复。因此,错误
回调将不会执行。相反,您应该只在success
callback中处理这个特殊场景
this.myService.getEmp(personEmpId).subscribe(
result => {
if(result){
this.personName = result.person_name;
}
else {
//log or display no data found message
}
},
error => {
console.log("EE:",error);
}
);
您可以使用
filter
操作符过滤掉空结果
this.myService.getEmp(personEmpId).filter(emp=>emp!==null).订阅..
现在,订户将仅在有值时订阅。您可以在订阅服务之前添加筛选器,如下所示:
// add this import on top of your source file
import { filter } from 'rxjs/operators'
this.myService.getEmp(personEmpId)
.pipe(filter(result) => !!result)
.subscribe(
result => {
this.personName = result.person_name;
},
error => {
console.log("EE:",error);
}
);
this.myService.getEmp(personEmpId)
.subscribe(
result => {
if (result) {
this.personName = result.person_name;
} else {
// do something
}
},
error => {
console.log("EE:",error);
}
);
如果您想在Web服务不返回任何内容时添加某些功能,可以在成功回调中这样做:
// add this import on top of your source file
import { filter } from 'rxjs/operators'
this.myService.getEmp(personEmpId)
.pipe(filter(result) => !!result)
.subscribe(
result => {
this.personName = result.person_name;
},
error => {
console.log("EE:",error);
}
);
this.myService.getEmp(personEmpId)
.subscribe(
result => {
if (result) {
this.personName = result.person_name;
} else {
// do something
}
},
error => {
console.log("EE:",error);
}
);
试试这个
this.myService.getEmp(personEmpId).subscribe(
result => {
if(result){
this.personName = result.person_name;
}
else{
//error code
}
},
error => {
console.log("EE:",error);
}
);
为什么不使用
if(result!==null).
?