Грамотный setTimeout 
		
		
		
		Добрый день. Есть функция которая берет данные и пушит их в массив, потом уже эти данные обновляются раз в минуту от клиента. Выглядит это так: 
	
getData ();
function getData (){
    $.getJSON( 'index', function(data) {
        createData(data);
    })
}
function createData(data){
     var inputdata = [];
     for (i = 0; i < data.length; i++){
            var arr = [+data[i].time, +data[i].sum];
            inputdata.push(arr);
     }
     createTrend(inputdata);
}
function createTrend(inputdata){
     //работаем с этими данными, добавление новых данных
      setTimeout(function() {
        createTrend(inputdata);
    }, 60000);
}
Сам вопрос: Нужно так же запускать функцию createTrend но с пустым массивом, как это сделать? Я переделывал так: 
getData (false); //допустим надо обнулить данные уже работающей функции
function getData (reload){
    $.getJSON( 'index', function(data) {
        createData(data, reload);
    })
}
function createData(data, reload){
     var inputdata = [];
     if(reload){   //если функция запущенна после загрузки страницы пушим данные
        for (i = 0; i < data.length; i++){
            var arr = [+data[i].time, +data[i].sum];
            inputdata.push(arr);
        }
     }else{  // если функция запущенна уже вручную стираем данные
        inputdata.length = 0;
     }
     createTrend(inputdata);
}
function createTrend(inputdata){
      if (createTrend.id !== undefined ) {
        clearTimeout(getData.id);
      };
     //работаем с этими данными, добавление новых данных
      createTrend.id = setTimeout(function() {
        createTrend(inputdata);
    }, 60000);
}
После исправления в первый раз массив очищается, а уже потом откуда то достается старый массив. Я так понимаю убивается clearTimeout новой функции, а не старой. Как убить setTimeout у старой функции чтоб оно не обновлялось, а старый массив стерся? Для большего пояснения нужно, чтобы клиент открыв страницу получил данные из базы в массив, и массив обновлялся раз в минуту (это сделано). Теперь надо добавить возможность обнуления этого массива чтобы функция createTrend обрабатывала пустой массив, и эта же функция createTrend запущенная до этого прекратила свою работу. :blink:  | 
	
		
 юю 
	 | 
	
		
 Вынес массив за пределы функции, вроде все работает, но это не хорошо :blink:  
	
var inputdata = [];
getData (false); //допустим надо обнулить данные уже работающей функции
function getData (reload){
    $.getJSON( 'index', function(data) {
        createData(data, reload);
    })
}
function createData(data, reload){
     if(reload){   //если функция запущенна после загрузки страницы пушим данные
        for (i = 0; i < data.length; i++){
            var arr = [+data[i].time, +data[i].sum];
            inputdata.push(arr);
        }
     }else{  // если функция запущенна уже вручную стираем данные
        inputdata.length = 0;
     }
     createTrend();
}
function createTrend(){
      if (createTrend.id !== undefined ) {
        clearTimeout(getData.id);
      };
     //работаем с этими данными, добавление новых данных
      createTrend.id = setTimeout(function() {
        createTrend();
    }, 60000);
}
 | 
	
		
 используй в createTrend setInterval вместо setTimeout 
	и тело ф-ции туда помести и при вызове createTrend делай возврат setInterval и при вызове createData обнуляй текущий интервал схематично, как-то так 
var inputdata = [];
    getData(false); //допустим надо обнулить данные уже работающей функции
    var currentInterval = null
    function getData(reload) {
      createData(data, reload);
    }
    function createData(data, reload) {
      clearInterval(currentInterval)
      currentInterval = createTrend();
    }
    function createTrend() {
      return setInterval(function () {
        //body function
      }, 60000);
    }
 | 
	
		
 SuperZen, 
	Спасибо, суть понятна :thanks:  | 
| Часовой пояс GMT +3, время: 09:29. |