0
3秒ごとにサーバーからデータを取得するサービスがあります。 サーバが非常に遅く、多くの応答が5または6秒後に発生することがあります。 これが起こると、私のサービスは保留中のものを待つのではなく、各要求を取り消し始めます。 どうすればこの問題を防ぐことができますか?角2、HTTPリクエストをポーリングして低速応答を待ちます
public getCallDiagnostic():Observable<IRespWidgets>{
let body = JSON.stringify({manager:"CallDiagnosticServiceManager",
action:"GetCallDiagnostic",
WEB_USER_TOKEN:this._authenticationService.getUserToken()});
let options = new RequestOptions({headers: new Headers({'Content-Type': 'application/json'})});
return Observable.timer(0,3000)
.switchMap(()=>this._http.post(this._apiUrl,body,options))
.map(res => <IRespWidgets>res.json().data)
.catch(this.handleError);
}
ありがとうございました 前のリクエストが到着した場合にのみリクエストを送信するより良い方法はありますか? –
@KwintenP私はここでそれをしたようにこれを行うことができます:http://plnkr.co/edit/6fBPFCus3HhZmCFBXFKq Ofcourse私はすべての要求が前のものを完了するのを待つ必要があるということを指しているだけです –
私は使用しないと思いますrepeatは、前の処理が終了したときにのみ次の要求を開始することができます。 – KwintenP