Я получил этот яваскрипт рекурсивной функции:Рекурсивная функция javascript с параметром?
function doStuff(graphName) {
var groupArray = new Array();
groupArray[0] = "hour";
groupArray[1] = "day";
groupArray[2] = "month";
for(var i = 0; i < groupArray.length; i++) {
$.get("getchartdata", {"graphName" : graphName, "subgroup" : groupArray[i]})
.done(function(jsonData){
var data = eval(jsonData);
drawChart(data, data[0][0], data[0][1]);
});
}
setTimeout(doStuff, 10000);
}
Теперь проблема заключается в том, что она отлично работает в первый раз, но через 10 секунд, когда пытаюсь снова, это показывает ошибку:
TypeError: data[0] is undefined in drawChart(data, data[0][0], data[0][1]);
Почему может это происходит?
Если добавить параметр в setTimeout(doStuff(graphName), 10000);
браузер падает.
Спасибо.
Никогда не применяйте когда-либо использовать 'eval' там! (Не для разбора JSON, а не когда он уже разобран) – Bergi
это не рекурсивная функция. – Zo72
Помните, что $ .get является асинхронным, поэтому вызов doSomething до завершения всех вызовов может вызвать проблемы, если для выполнения вызовов требуется более 10 секунд. Вы можете использовать $ .ajax и установить async = false. –