В setTimeout функция читает более старую версию глобальной переменной
В программе, над которой я работаю, данные возвращаются после многих запусков программы. Эта программа имеет графический вывод, поэтому есть определенная частота кадров, на которой все работает. Вот код:
function runTest(fps, testsPerRun, runs) {
var main = setInterval(function(){
runSetup(); //Set everything up for running the program once
createGraphicOutput(); //Set up and clear the graphic output
var code = setInterval(function(){
runtest(); //Run one test
updateCanvas(); //Update graphic output
}, 1000 / fps);
setTimeout(function(){
clearInterval(code);
}, turns * (1000 / fps));
}, (1000 / fps) * testsPerRun);
setTimeout(function(){
clearInterval(main);
interpretData(testsPerRun);
}, ((1000 / fps) * testsPerRun) * runs);
}
Когда он запускается, interpretData
функция, которая должна console.log
все данные, которые он хранит, возвращают 0 для всех. Все данные находятся в массиве объектов, у которых свойство "запись" установлено в 0 в начале выполнения. Во время выполнения я подтвердил, что "запись" действительно меняется, но он думает, что это все еще 0. Почему это?