使用 Rxjs 6 在 Angular 6 中返回一个空/空的 Observable

Kev*_*ing 3 rxjs typescript angular6 rxjs6

我正在使用 Rxjs 6处理Angular 6,同时我有一个关于如果响应失败或有异常返回空/空 Observable 的问题,这是我的假设,我的远程 api 将返回一个IOptionResponse对象,它包含一个消息字符串,可以被指示为“成功”或“失败”,它还包含一个模型,它是一个“IOption”对象数组

export interface IOptionResponse {
    message: string;
    model: IOption[];
}
Run Code Online (Sandbox Code Playgroud)

这是我的服务方法名称,它将返回一个 IOption 数组的 Observable,它是我的远程 API 结果的“模型”

loadIOptionMembersRelationship(): Observable<IOption[]> {
    return this.httpClient.get<IOptionResponse>('${environment.apiUrl}/api/member/XXX')
        .map(
            (response) => {
                console.log(response);
                // if response.message is success, return IOption[] model
                if (response.message == responseMessage.Success) {
                    return response.model;
                }
                else {
                    // return Observable.empty<IOption[]>(); failed
                    // return new Observable.empty<IOption[]>(); failed
                    // return new EmptyObservable<IOption[]>(); failed
                    // return new Observable<IOption[]>.from([]); failed
                    // Otherwise return a NULL/EMPTY Observable
                    //What should be the correct way to implement here???
                }
            }
        );
}
Run Code Online (Sandbox Code Playgroud)

我已经在这里阅读了类似的帖子,但是我尝试了所有可能的解决方案,但它们都不起作用,我不确定是因为发布的解决方案已过时,还是 rxjs 6 中的某些方法已更改,或者它可能是一个打字稿问题...

Poo*_*jee 9

如果你想在使用 Rxjs6 时返回一个空的 Observable 数组,你需要...

import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

然后你想要返回 <IOption[]> 类型的空 Observable 数组......

return of<IOption[]>([]);
Run Code Online (Sandbox Code Playgroud)