Angular 如何检查订阅期间可观察到的角度为5 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); } ); 如何测试我对该服务的订阅是否返回空结果,即未找到任何记录

RxJS在角度范围内可观测

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).