setTimeout在NodeJS中不起作用

时间:2014-07-15 09:07:53

标签: javascript css node.js

我有这个调用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);
                }
            }     

1 个答案:

答案 0 :(得分:1)

您正在将this.animate(bottom)返回值传递给setTimeout

animate函数没有return语句,因此返回undefined

函数的效果立即发生(因为你正在调用它),然后setTimeout什么都不做。

将功能传递给setTimeout

var self = this;
var callback = function () {
    self.animate(bottom);
};
setTimeout(callback, 20);