2016-08-26 17 views
1

私が観察を返し、次の方法があります。API呼び出しを実行するごとに10秒

私はすべての10それを実行するにはどうすればよい
ngOnInit() { 
this.getWhatsUp(); 
} 

getWhatsUp() { 
    this.service.getWhatsUp() 
        .subscribe(
        data => { 
         this.activities = data.activities; 
        }, 
        error => { console.log("Error #333"); } 
        ); 
    } 

:私は私のコンポーネントで、次のようにそれを使用

getWhatsUp() { 
    return this.http.get('user/whatsUp?token=' + this.getToken()) 
        .map((res:Response) => res.json()) 
       .catch(
     err => { 
      this.checkToken(err); 
      return Observable.throw('Unverified token'); 
      } 
    ); 
} 

をアクティビティをアップして、apiコールがスタックされずに複数回実行されることを確認します。

私は約interval方法を知っているが、私は

答えて

0

一つの可能​​な解決策はのsetIntervalとのハンドラが含まれる追加機能を作成することです、私のセットアップでそれを使用するかどうかはわかりません。 setInterval(myTimer、10000)

ngOnInit() { 
    this.getWhatsUpHandler(); 
} 

getWhatsUpHandler(){ 
    setInterval(getWhatsUp, 10000); 
} 

getWhatsUp() { 
    this.service.getWhatsUp() 
       .subscribe(
       data => { 
        this.activities = data.activities; 
       }, 
       error => { console.log("Error #333"); } 
       ); 
} 
2

理由だけではない:

ngOnInit() { 
    setInterval(() => this.getWhatsUp, 10000); 
} 

あなたは構文の詳細情報が必要な場合、それはES6 Arrow function againです。

1

RxJSの道

ngOnInit(){ 
    let sec = 10; 
    Observable.timer(0, sec * 1000).subscribe(this.getWhatsUp()); 
} 
-2

は、よりよい解決策は、角度のプロバイダに$間隔$を使用することです

例を破壊する:現在の状態/コントローラが変更された場合は、このソリューションは、コールを破壊したよう

var stop=$interval(function() { 
      function_call(); 
     }, 12000) 

     $scope.stopInterval = function() { 
      if (angular.isDefined(stop)) { 
       $interval.cancel(stop); 
       stop = undefined; 
      } 
     }; 

     $scope.$on('$destroy', function() { 
      // Make sure that the interval is destroyed too 
      $scope.stopInterval(); 
     }); 
関連する問題