typescript - Returner en null/tom Observable i Angular 6 med Rxjs 6


Jeg jobber med Angular 6 med Rxjs 6 mens jeg har et spørsmål angående å returnere en null/tom Observable hvis responsen feilet eller har en unntakstilstand. Her er min antagelse: mitt eksterne API vil returnere et objekt av IOptionResponse, det inneholder en meldingsstreng som kan indikere 'SUCCESS' eller 'FAILED', det inneholder også en modell som er et array av 'IOption'-objekter

export interface IOptionResponse {
    message: string;
    model: IOption[];
}

Her er navnet på tjenestemetoden min, den vil returnere en Observable av IOption-array som er "modellen" for resultatet fra fjern-APIet mitt

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???
                }
            }
        );
}

Jeg har lest innlegget her som er lignende, men jeg har prøvd alle mulige løsninger og de fungerer ikke, jeg er ikke sikker på om det er fordi de foreslåtte løsningene er utdaterte eller kanskje noen metoder har endret seg i rxjs 6 eller kanskje det er et TypeScript-problem...

Svar #1

Hvis du vil returnere et tomt Observable-array mens du bruker Rxjs6, må du...

import { of } from 'rxjs';

Da hvor du vil returnere ditt tomme Observable-array av typen <IOption[]> ...

return of<IOption[]>([]);

Relaterte artikler