Ich bin relativ neu zu rxjs.rxjs observable.of (Objekt) returns {"_isScalar": "", "value": {}, "scheduler": ""} statt Wert
Ich habe versucht, eine Funktion zu erstellen, die einen Winkel 2 HTTP-Anforderung wie das läuft:
syncFromApi$() {
// create Headers
...
let ob$ = this.http.post(
CONFIG_APP.apiEndpoint + '/sync/app',
'',
{ headers: headers }
)
.map((response:Response) => {
return Observable.of({type: "success", payload: response.json()});
})
.catch(function (err:Response) {
return Observable.of({type: "error", payload: err.json()});
});
return ob$;
}
Kurz gesagt, wenn der Erfolg habe, ich ein Objekt zurückkehre, das, wenn die Anforderung erfolgreich war anzeigt. Danach möchte ich Karte wechseln je nach zurückgegebene Objekt:
let o$ = syncFromApi$()
.switchMap((value) => {
console.log("value", JSON.stringify(value, null, 0));
if (data.type === 'success') {
return Observable.of(1);
} else if (data.type === 'error') {
return Observable.of(2);
}
});
Und hier kommt das Problem, das ich gegenüber. Die console.log (...) gibt ein Objekt wie folgt:
value, {"_isScalar": true, "value": THIS_IS_WHAT_I_NEED_AS_VALUE, "scheduler": null}
Aber ich brauche nur das Objekt, das ich mit der syncFromApi $ Funktion zurückgegeben.
Kann mir jemand erklären, wenn ich observable.of()
in der falschen Weise verwende?
Ich versuchte observable.of(1)
und es gibt 1 als Wert zurück. Wenn ich ein Objekt verwende (observable.of({ type: "myType", message: "myMessage" })
), gibt es ein Objekt zurück, das das benötigte Objekt mit den Schlüsseln "_isScalar", "value" und "scheduler" umschließt.
Vielen Dank im Voraus.
Warum geben Sie ein Observable aus Ihrer Mapping-Funktion zurück, und nicht nur das Objekt? Sie wollen kein Observables Observables. –
Ich möchte später die Kette der Observablen abonnieren – divramod
map Transformieren Sie eine beobachtbare von x in eine beobachtbare von y dank einer Funktion, die x in y umwandelt. Du musst dich nicht in ein Observable einhüllen. –