2

リクエストを適切に処理し、API リクエストで標準エラー処理を実行する API を呼び出すためのサービスが必要です。たとえばApiErrorsService、API 呼び出しでエラーが発生したときに呼び出したい があります。また、標準的な方法で呼び出しを送信したいと考えています。つまり、Content-Type を application/json に設定し、リクエスト オブジェクトをシリアル化します。

もちろん、返されたオブザーバブルをサブスクライブすると、Http一度呼び出され、それを返して呼び出し元がサブスクライブすると、再度呼び出されます。API 呼び出しを 2 回実行せずに 2 つの場所で結果をリッスンできるようにするための最良の方法は何でしょうか? .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;
}
4

2 に答える 2

3

使うshareのはやり過ぎです。エラーをインラインで処理したいだけの場合は、do代わりに次を使用できます。

return this.http.post(path, s, { headers: headers })
   .do(null, err => this.appErrorsService.addApiError(err));
于 2016-04-22T08:01:23.713 に答える