Итак, я вижу любопытную проблему. Если у меня есть функция
// counter wraps around to beginning eventually, omitted for clarity.
var counter;
cycleCharts(chartId) {
// chartId should be undefined when called from setInterval
console.log('chartId: ' + chartId);
if(typeof chartId == 'undefined' || chartId < 0) {
next = counter++;
}
else {
next = chartId;
}
// ... do stuff to display the next chart
}
Эта функция может быть вызвана явно действием пользователя, в этом случае chartId
передается в качестве аргумента, и отображается выбранная диаграмма; или это может быть в режиме автозапуска, в этом случае он вызывается с помощью setInterval
, который инициализируется следующим:
var cycleId = setInterval(cycleCharts, 10000);
Странно то, что я на самом деле вижу, как cycleCharts()
получает аргумент chartId
, даже когда он вызывается из setInterval
! setInterval
даже не имеет параметров для передачи функции cycleCharts
, поэтому я очень озадачен тем, почему chartId
не является неопределенным при вызове cycleCharts
из setInterval
.