javascript - Kjede observabel betinget


For følgende TypeScript (som bruker rxjs):

getRegularData(): Observable<MyData> {
    return WS.loadRegularData();
}

getAlternateData(): Observable<MyData> {
    return WS.loadAlternateData();
}

hvordan kan en ny metode implementeres for å oppfylle følgende pseudokode:

getData(): Observable<MyData> {
    // try to use getRegularData, and return observable for result.
    // if getRegularData returns null, get data from getAlternateData()
    // instead and return observable for result.
}

Svar #1

Det er mange måter du kan implementere dette på, en ville være å bruke en switchMap som inneholder din betingelse:

getData(): Observable<MyData> {
    return getRegularData()
        .switchMap(data => {
            if (data != null) {
                return Observable.of(data);
            } else {
                return getAlternateData();
            }
        });
}

Relaterte artikler