Я не знаю, является ли это единственной проблемой в вашем коде, но одной существенной проблемой является то, как вы используете setTimeout()
:
setTimeout(plotXY(true), 100); // doesn't work
То есть, для вызова функции plotXY()
и затем передайте все, что возвращается в качестве первого параметра, setTimeout
.
Вместо этого первый параметр в setTimeout()
должен быть выражением функции или ссылкой на такую функцию:
setTimeout(plotXY, 100); // works, but doesn't pass parameter to plotXY()
Обратите внимание, что plotXY
имеет не для этой цели есть скобки.Но, конечно, это оставляет вас с другой проблемой: вы хотите, чтобы plotXY()
вызывался с параметром true
.Это легко решить, обернув вызов plotXY()
в другой функции и передав эту функцию в setTimeout()
:
setTimeout(function(){ plotXY(true); }, 100); // works
, которая создает анонимную функцию и передает эту функцию setTimeout()
.
Возможно, вы захотите снова вызвать setTimeout()
в конце вашей функции plotXY()
или использовать setInterval()
, иначе ваша анимация будет иметь только один шаг.Или вы можете сделать что-то вроде следующего, который показывает и другой способ решения проблемы передачи параметров и способ продолжать вызывать функцию с помощью setTimeout()
:
function plotXYProxy() {
plotXY(true);
setTimeout(plotXYProxy, 100);
}
plotXYProxy();
Конечно, вы можете добавить некоторую условную обработкув пределах plotXYProxy()
, чтобы решить, устанавливать ли каждый тайм-аут, например, вы могли бы plotXY()
вернуть логическое значение относительно того, закончилась ли анимация, и вызвать setTimeout()
или нет, основываясь на этом логическом значении.Или что угодно.
Все, что я только что сказал о параметрах setTimeout()
, также относится к setInterval()
.