Javascript setTimeout在NodeJS中不工作
我有一个slideUp函数,它调用animate函数。目的是使div看起来像 每20毫秒调用一次动画功能,在屏幕上向上滑动,并在调整div位置的css后在浏览器中重新设置div的位置。 我使用的是Node js,由于 异步行为,我相信超时只被调用一次,并且程序在等待超时完成时继续运行。 当我将“bottom”的值打印到控制台时,它已按预期循环了20次。只有最后的视图 得到你。有谁能提供任何方法来绕过这个问题,让它每20次重播一次Javascript setTimeout在NodeJS中不工作,javascript,css,node.js,Javascript,Css,Node.js,我有一个slideUp函数,它调用animate函数。目的是使div看起来像 每20毫秒调用一次动画功能,在屏幕上向上滑动,并在调整div位置的css后在浏览器中重新设置div的位置。 我使用的是Node js,由于 异步行为,我相信超时只被调用一次,并且程序在等待超时完成时继续运行。 当我将“bottom”的值打印到控制台时,它已按预期循环了20次。只有最后的视图 得到你。有谁能提供任何方法来绕过这个问题,让它每20次重播一次 slideUp: function () {
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);
}
}
slideUp:function(){
var-bottom=0;
这个。动画(底部);
},
动画:函数(底部){
底层++;
如果(底部您正在将this.animate(底部)
的返回值传递给设置超时
animate
函数没有return
语句,因此它返回undefined
函数的效果立即发生(因为您正在调用它),然后setTimeout
什么也不做
将函数传递给setTimeout
var self = this;
var callback = function () {
self.animate(bottom);
};
setTimeout(callback, 20);
哼……你是在使用Node js客户端吗?这是浏览器需要关注的问题。Node.js运行在服务器端。你们都错了。如果你使用或类似的框架,你可以在浏览器环境中轻松运行Node.js。@嗯,你一定是在开玩笑--Node webkit
是用于创建独立的应用程序的。@MMM OP说:“在“浏览器”和问题未标记为节点webkit
。。。