У меня возникают проблемы, когда я пытаюсь оживить элемент. У меня есть рекурсивная функция animate, которая содержит setTimeout для задержки анимации. Проблема в том, что следующая строка после вызова рекурсивного метода запускается до вызова анимации. Например, с этим кодом:
this.slideTo = function(x,y) {
var originalStyle = this.element.style.cssText;
var endX = x;
var endY = y;
var pos = this.getPosition();
var startX = pos.x;
var startY = pos.y;
var distX = x - pos.x;
var distY = y - pos.y;
var totalDistance = Math.sqrt((distX*distX) + (distY*distY));
var count = 0;
var done = false;
animate(this.element);
function animate(element) {
count += 5;
var curPos = _(element).getPosition();
var curDistX = endX - curPos.x;
var curDistY = endY - curPos.y;
var curDistance = Math.sqrt((curDistX*curDistX) + (curDistY*curDistY));
var percentDone = count/totalDistance;
var moveToX = Math.round((percentDone*distX) + startX);
var moveToY = Math.round((percentDone*distY) + startY);
_(element).moveTo(moveToX,moveToY);
if(percentDone <= 1) {
setTimeout(function(){animate(element);},1);
} else {
done = true;
}
}
console.log(done);
this.element.style.cssText = originalStyle;
}
Консоль показывает false, потому что она запускается до завершения анимации. Как я могу решить это? Кстати: это вызывается на событие мыши. Может ли это иметь какое-либо отношение к этому?