私は、HTTP「202 Accepted」応答を返すAPIを使用しており、長時間実行されているリクエストの処理を開始します。レスポンスコードに基づいて遅れて角度の投稿要求を再試行する方法
私はHTTPの "200 OK"応答を受信するまで、遅延の後に同じ要求を送信する必要があります。その時点で、応答本体から結果を照会できます。
私はドキュメントを見直して、エラー時に再試行の例をいくつか見つけましたが、成功を遅らせると再試行する方法が見つかりません。
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
@Injectable()
export class WebService {
private _serviceUrl = 'https://webservice.com/api/long_request';
constructor(private _http: HttpClient) { }
getData() {
let body = JSON.stringify({
"time_properties":
{
"start_date": "2017-08-10",
"end_date": "2017-08-14"
}
});
return this._http.post(this._serviceUrl, body)
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
private handleError(err: HttpErrorResponse) {
console.error(err.message);
return Observable.throw(err.message);
}
}
を開始再試行しますObservable.js〜Observable.html#instance-method-repeatWhen – martin
「retryWhen()」を使用できます:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-retryWhen – Supamiu