2017-12-05 16 views
0

私は設定間隔と一緒に.combineLatestを使用して、5秒ごとに新しい値が出力されるようにしています。私は次に、このコンポーネントを子コンポーネントへの入力として渡していますが、入力に渡されるデータは毎回同じです。開発ツールのネットワークタブを見ると、追加の呼び出しは行われません。Observable combine/Interval/Timerと一致する

.flatMap(() => { 
    return Observable.interval(5000).combineLatest(
     this.http.getData(args), 
     this.http.getOtherData(args) 
    ) 
    }) 
    .subscribe(res => { 
    this.dailyStocks = res[1]; 
    this.dailyStocks = this.dailyStocks.slice(0) 
    } 

子コンポーネント:

@Input('dailyStocks') 
    set dailyStocks(val: ListSymbolObj[]) { 
    this._dailyStocks.next(val); 
    } 

    get dailyStocks() { 
    return this._dailyStocks.getValue(); 
    } 

    ngOnInit() { 
    this._dailyStocks 
      .filter(x => x != undefined) 
      .take(1) 
      .subscribe(res => { 
      //res is same 
      } 
    } 

答えて

2

あなたはこのようにそれを書くべき間隔からのすべての値にリクエストを作成するには:

Observable.interval(5000).switchMap(() => 
    Observable.combineLatest(
    this.http.getData(args), 
    this.http.getOtherData(args)  
) 
) 

現在、あなたのコードだけですので、追加のリクエストをしていません3つのオブザーバブルからの値を結合します。これは、次のコードに相当します。

Observable.combineLatest(
    Observable.interval(5000), 
    this.http.getData(args), 
    this.http.getOtherData(args)  
) 
+0

素晴らしい、ありがとう! – Yeysides

関連する問題