实时数据流应根据上次收到的时间更改用户界面

时间:2018-02-09 20:12:40

标签: javascript angularjs real-time

我有实时数据进入,基于此我必须在UI中更改指标。这意味着如果我在过去30秒内没有收到数据,则指示灯应变为红色。如果在30秒之前收到数据,则应为绿色。请注意,数据一个接一个地进入函数。在这种情况下,指标应该针对每个数据(curveName)进行更改。

我使用了$ timeout和$ interval,但无法解决问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在控制器中添加以下内容:

var timer,
    timeLimit = 30000; //30s limit

function onDataReceived(data) {
  //  cancel previous timer
  if(timer) $timeout.cancel(timer);

  // assuming data is good set indicator to green
  $scope.indicator = "green";

  // set 30s timer for indicator to go red
  timer = $timeout(function(){
    $scope.indicator = "red";
  }, timeLimit);
}

根据接收数据的方式和应用程序结构,您可以考虑使用以下内容:

$scope.$watch('data', onDataReceived);