我有这个调用animate函数的slideUp函数。目标是使div出现 通过每20ms调用一次动画功能在屏幕上向上滑动,并在调整div位置的css后重新渲染浏览器中的div。 我正在使用Node js,并且由于 异步行为,我相信超时只会被驱散一次,并且程序在等待超时完成时继续运行。 当我将'bottom'的值打印到控制台时,它按预期循环了20次。只有最后的看法 得到了你。任何人都可以提供任何方法来解决这个问题,以便它重新渲染20次?
slideUp: function () {
var bottom=0;
this.animate(bottom);
},
animate: function(bottom){
bottom++;
if (bottom<20){
this.view.getClientNotificationElement().setAttribute("style","margin-bottom:"+bottom+"px");
this.clientNotification.attachTo(this.view.getClientNotificationElement());
setTimeout(this.animate(bottom), 20);
console.log(bottom);
}
}
答案 0 :(得分:1)
您正在将this.animate(bottom)
的返回值传递给setTimeout
。
animate
函数没有return
语句,因此返回undefined
。
函数的效果立即发生(因为你正在调用它),然后setTimeout
什么都不做。
将功能传递给setTimeout
。
var self = this;
var callback = function () {
self.animate(bottom);
};
setTimeout(callback, 20);