我想要調用一個API來正確處理請求並對API請求執行標準錯誤處理。例如,我有一個ApiErrorsService
,我想在任何API調用發生錯誤時調用它。我還希望以標準方式提交調用,即將Content-Type設置爲application/json並序列化請求對象。爲Angular 2 Http訂閱兩次?
當然,當我訂閱從Http
返回的observable時,它會被調用一次,當我返回並且調用者訂閱它時,它會再次被調用。能夠在兩次執行API調用的情況下偵聽結果的最佳方式是什麼?我可以撥打.publish()
或.share()
並返回那個嗎?我需要處理嗎?是否有可能發生的時間問題?如果我嘲笑API調用並立即返回一個值,那麼這個工作是否正常,或者調用者的訂閱是否會錯過這些值?下面的代碼我有:
post(path: string, data: any): Observable<Response> {
var headers: Headers = new Headers();
headers.set("Content-Type", "application/json");
var s = data == null ? null : JSON.stringify(data, null, 2);
var shared = this.http.post(path, s, { headers: headers }).share();
shared.subscribe(null, err => this.appErrorsService.addApiError(err));
return shared;
}