Eckige http.post ohne .abonnieren Rückruf
Frage ich mich, ob ich das machen kann nur ein http post-Anforderung ohne Anmeldung auf Rückrufe, so etwas wie dieses
this._http.post('/list/items/update?itemId=' + itemId + "&done=" + done, null);
stattdessen
this._http.post('/list/items/update?itemId=' + itemId + "&done=" + done, null)
.subscribe();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass Sie können.
http.post (und get, put, delete, etc) gibt einen kalten Beobachtbar, d.h. eine Beobachtbare, für die:
Quelle.
Dies bedeutet, dass die Funktion repräsentiert durch die
Observable
ist nur aktiviert, mit dersubscribe()
Methode.Ich hatte die gleiche Frage, aber dann habe ich herausgefunden, dass ich eigentlich egal, wenn jemand abonniert, der beobachtbar ist. Ich will nur die POST-Anforderung gesendet wird in jedem Fall. Dies ist, was ich kam mit:
Die Anfrage gesendet wird, sobald
connect()
genannt wird. Es gibt jedoch noch eine beobachtbare, dass der Anrufer vonpostItem
abonnieren können, falls erforderlich. DapublishReplay()
verwendet wird, anstatt nurpublish()
anmelden ist möglich, auch nach der POST-Anfrage abgeschlossen.error TS2339: Property 'json' does not exist on type 'Object'.
Observable
zu verbinden:const observable = this.http.post<T>('/api/items', itemData).pipe(publishReplay()); (observable as ConnectedObservable<T>).connect(); return observable;
Ich bin mit der Umstellung auf Promise (erfordert rxjs):
Genau wie @picci Punkte, regelmäßige observablen sind kalt observablen. Wenn Sie möchten, um eine Anfrage können Sie versuchen @lex82 Idee, hier ist ein rxjs 6 Entwurf:
das ist im Grunde wie ein abonnieren, aber ohne ein richtiges Abo.
https://blog.danlew.net/2018/09/25/connectable-observables-so-hot-right-now/