korrekt macht, verwende redux-observable mit rxjs 5.5 und ich versuche, eine grundlegende ajax POST Anfrage zu einem Node express Server zu machen.Wie man eine Observable.ajax.post Anfrage in RXJS5
Ich kann nicht scheinen, irgendeine relevante Dokumentation oder aktuelle Arbeitsbeispiele für Observable.ajax zu finden. Welche Lösung auch immer angeboten wird, erscheint einige Fehler zu werfen, trotz scheinbar die richtige Signatur nach dem tatsächlichen API
Mein aktueller Code-Schnipsel zu verwenden (redux beobachtbare und rxjs 5.5: wie folgt:
const loginEpic = (actions) => {
const opts = credentials => {
const { username, password } = credentials;
return {
url: 'http://localhost:3001/login',
body:{ username, password },
headers: { 'Content-Type': 'application/json; charset=utf-8' },
};
};
return actions.ofType(ActionTypes.LOGIN_REQUESTED)
.switchMap(({credentials}) => {
const { url, body, headers } = opts(credentials)
return Observable.ajax.post(url, body, headers)
.map(loginResponse =>
loginResponse.status===200
? loginResolvedAction(loginResponse.response)
: loginFailedAction(loginResponse.response))})
}
Dies ist eine n-te Wiederholung des Versuches, dies zum Laufen zu bringen, aber ohne Erfolg.Erstes Problem ist die Tatsache, dass ich die crossDomain
Eigenschaft auf true setzen möchte, da ihr Standardwert auf false ist, jedoch scheint es keinen solchen zu geben Eine Eigenschaft, die eingestellt werden soll (trotz der Chrome Dev Tools, die es anzeigt.
Hier ist der Fehler:
Ich benutze einen einfachen Express-Server auf dem Backend, der einfach ein einfaches JSON-Objekt zurückgibt, wenn die URL auf den Post trifft. Dieser Endpunkt wird jedoch nicht mit der aktuellen Observable.ajax.post-Anfrage oben getroffen.
Ich habe ein Chrome-Plugin, das CORS erlaubt, und die Verwendung anderer Bibliotheken wie Axios scheint zu funktionieren. Allerdings bevorzuge ich Observables und redux-observable und rxjs sind großartige Bibliotheken, ein großes Lob an die Autoren, aber ich kann dem Ajax-Problem nicht auf den Grund gehen. Kann jemand helfen?
Sie können redux-observable mit den Versprechen verwenden, konvertieren Sie einfach Ihre Versprechen in eine beobachtbare mit ['Observable.fromPromise'] (http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html # static-method-fromPromise) –