そのため、アプリで次のことを行う必要があるいくつかのケースに取り組んでいます
イベントがトリガーされたら、次の操作を行います
- リスト項目
- そのコンテキストを持つデータが既にキャッシュされているかどうかを確認し、キャッシュされたものを提供します
- キャッシュがない場合は、500 ミリ秒のデバウンス
- 他の http 呼び出しが (同じコンテキストに対して) 実行されているかどうかを確認し、それらを強制終了します。
- http 呼び出しを行う
- 成功時キャッシュおよびモデル データの更新/置換
先行入力機能に関してはかなり標準的
これでオブザーバブルを使用したいのですが...途中で、以前の呼び出しが実行されている場合はそれらをキャンセルできます
それに関する良いチュートリアルはありますか?私は周りを見回していましたが、リモートで最新のものを見つけることができませんでした
OK、私が今やったことの手がかりを与えるために:
onChartSelection(chart: any){
let date1:any, date2:any;
try{
date1 = Math.round(chart.xAxis[0].min);
date2 = Math.round(chart.xAxis[0].max);
let data = this.tableService.getCachedChartData(this.currentTable, date1, date2);
if(data){
this.table.data = data;
}else{
if(this.chartTableRes){
this.chartTableRes.unsubscribe();
}
this.chartTableRes = this.tableService.getChartTable(this.currentTable, date1, date2)
.subscribe(
data => {
console.log(data);
this.table.data = data;
this.chartTableRes = null;
},
error => {
console.log(error);
}
);
}
}catch(e){
throw e;
}
}
ここにデバウンスがありません
-- lodashのデバウンスを実装することになりました
import {debounce} from 'lodash';
...
onChartSelectionDebaunced: Function;
constructor(...){
...
this.onChartSelectionDebaunced = debounce(this.onChartSelection, 200);
}