Highcharts: как остановить функцию setTimeout при открытии нового углового компонента? - PullRequest
0 голосов
/ 13 февраля 2019

если открыт новый компонент, сервис функции setTimeout продолжит работу.

live Demo: http://next.plnkr.co/edit/OqMofEGDadF9J3Uit8qD?utm_source=legacy&utm_medium=worker&utm_campaign=next&preview

//simplified value generator   
function requestData() {

$.ajax({
url: 'points.json',
success: function(seriesUpdate) {

  //in case initializer of highcharts is too quick - skip the update
  if (!chart) {
    setTimeout(requestData, 1000);
    return;
  }

  //mocking for making static response data into dynamic
  $.each(seriesUpdate, function (serieIndex, serieUpdate) {
    mockPointCoordinates(serieUpdate.data[0]);
  });

  $.each(seriesUpdate, function (serieIndex, serieUpdate) {
        var existingSerie = chartSeries[serieUpdate.name];
        if (existingSerie ) {
          //add a point
          var shift = existingSerie.data.length > 20;
          existingSerie.addPoint(serieUpdate.data[0], true, shift);
        } else {
          //add a chart with point
              var newSerie = chart.addSeries({                        
                name: serieUpdate.name,
                  data: serieUpdate.data
                }, true);
                chartSeries[serieUpdate.name] = newSerie;
        }

      });
  // call it again after one second
  setTimeout(requestData, 1000);
},
cache: false

});}

1 Ответ

0 голосов
/ 13 февраля 2019

Сохраните timeoutID в глобальной переменной (или общей службе), а затем передайте его clearTimeout, когда вам нужно остановить setTimeout выполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...