Search code examples
angularrxjsangular-httpclient

How to send a POST request via Angular HttpClient wihout cancelling on unsubscribe?


I need to send a POST request and I do not care if it succeeds or fails => "fire and forget". Immediately after sending the request a hard redirect is initiated. This causes the Angular HttpClient POST request to be cancelled.

// sending POST request
this.httpClient.post('someUrl', {}).subscribe();
// hard redirect causes cancelation of POST request
window.location.replace('someOtherUrl');

Is there any way to send the request without it being cancelled?


Solution

  • Use finalize

    this.httpClient.post('someUrl', {})
      .pipe(finalize(() => window.location.replace('someOtherUrl'))
      .subscribe();
    

    or add

    this.httpClient.post('someUrl', {})
      .subscribe()
      .add(() => window.location.replace('someOtherUrl'));
    

    Finalize will emit for next or error, add should be called on unsubscribe (HttpClient automatically completes).