私の最初の質問はここにあります!私が行うアプリに取り組んでいる は、次のようにAPIと通信間隔のあるRxJSオブザーバブルの連鎖
STEP1:が要求ペイロードを追加し、要求のオプションを作成 - > APIへのPOSTリクエストが
APIは、リクエストIDを応答
ステップ2:更新要求オプション、ペイロードとして要求IDを送信する - >ポスト要求APIに
最終応答:response.json
最終的な応答には、要求されたデータに応じて少し時間がかかることがあります。 これは平均して4〜20秒の間のどこからでもかかります。
observablesを使用してこれらのリクエストをチェーンするにはどうすればよいですか?switchmapを使ってみましたが失敗しましたが(下のように)、どのように間隔を追加するのですか? ポーリングは4秒ごとに行われ、レスポンスの解除は実行可能な解決策ですか?どのようにこれは上記の文脈で行われますか?
EDIT1: 最終目標:私は、角度や学習の観測に新たなんだ、と私は前方の最良の方法であるかを理解しているよ...この文脈において観察助けを連鎖するのでしょうか?すなわち、最初の応答の後に何らかの種類の間隔があり、flatMap を使用するか、または間隔のあるポーリングを使用してレポートが準備完了であるかどうかを確認します。ここで
は私が持っているものだ、これまで輸出クラスreportDataService { コンストラクタ(プライベート_HTTP:HTTP){}私のコンポーネントで
headers: Headers;
requestoptions: RequestOptions;
payload: any;
currentMethod: string;
theCommonBits() {
//create the post request options
// headers, username, endpoint
this.requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: url,
headers: newheaders,
body: JSON.stringify(this.payload)
})
return this.requestoptions;
}
// report data service
reportService(payload: any, method: string): Observable<any> {
this.payload = payload;
this.currentMethod = method;
this.theCommonBits();
// fetch data
return this._http.request(new Request(this.requestoptions))
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
どう使用について
fetchData() {
this._reportService.reportService(this.payload, this.Method)
.switchMap(reportid => {
return this._reportService.reportService(reportid, this.newMethod)
}).subscribe(
data => {
this.finalData = data;
console.info('observable', this.finalData)
},
error => {
//console.error("Error fetcing data!");
return Observable.throw(error);
}
);
}
あなたの質問は私にはかなり不明瞭です。あなたは何を達成しようとしていますか?あなたは2つのAPI呼び出しを連鎖させるだけでいいですか、それとも定期的に行う必要がありますか? –
お時間をありがとう!私は私の最終目標を追加しました。私は最善の方法を把握しようとしています。これを達成するためにチェーンを使うか、他のアプローチをしています。私は新しいリクエストごとにこのサービスを呼び出さなければなりません – anilZ