如何在JavaScript中延迟
如何在JavaScript中延迟,javascript,Javascript,.defer(5000)在JavaScript中导致了太多递归错误。如何将执行延迟5秒 rotate: function () { if (!paused) { this.show(counter); counter = counter + 1; if (counter === Spire.Rotator.data.items.length) { counter = 0; } Spire.Rotator.rotate().defer(
.defer(5000)
在JavaScript中导致了太多递归
错误。如何将执行延迟5秒
rotate: function () {
if (!paused) {
this.show(counter);
counter = counter + 1;
if (counter === Spire.Rotator.data.items.length) {
counter = 0;
}
Spire.Rotator.rotate().defer(5000);
//$.proxy(Spire.Rotator.rotate, Spire.Rotator).defer(delay);
}
}
简单地将其替换为:
Spire.Rotator.rotate().defer(5000);
为此:
setTimeout(Spire.Rotator.rotate, 5000);
是javascript在指定时间后执行某些javascript代码的本机方式 只需将其替换为:
Spire.Rotator.rotate().defer(5000);
为此:
setTimeout(Spire.Rotator.rotate, 5000);
是javascript在指定时间后执行某些javascript代码的本机方式 实际上,在您的代码中,从不调用defer()。假设您定义的旋转方法是针对Spire.Rotator对象的,则会发生以下情况:
rotate() calls rotate() calls rotate() calls rotate() .... [to infinity]
调用次数infinity
之后,infiniteth
调用的返回值将调用defer方法。但是你必须等待无限次的调用发生,这需要花费永恒
秒来完成
您需要的是。实际上,在您的代码中,从不调用defer()。假设您定义的旋转方法是针对Spire.Rotator对象的,则会发生以下情况:
rotate() calls rotate() calls rotate() calls rotate() .... [to infinity]
调用次数infinity
之后,infiniteth
调用的返回值将调用defer方法。但是你必须等待无限次的调用发生,这需要花费永恒
秒来完成
您需要的是。这整行:
Spire.Rotator.rotate().defer(5000);
这是错误的。由于rotate
后面的括号,函数会立即一次又一次地调用自身(无限递归)。删除括号可以解决这个问题,但代码可能无法工作。要修复代码,请使用浏览器的,它接受函数和延迟(以毫秒为单位)作为两个参数:
setTimeout(function() {
Spire.Rotator.rotate();
}, 5000);
为什么不干脆setTimeout(Spire.Rotator.rotate,5000)代码>?原因是该函数中的此
将是窗口
,而不是螺旋旋转器
。(互联网上有这方面的信息。)为什么不setTimeout(“Spire.Rotator.rotate()”,5000)代码>?这是一种非常过时(已弃用)的方法,该方法与Douglas Crockford等一些JavaScript程序员建议不要使用的函数有相同之处。整行代码:
Spire.Rotator.rotate().defer(5000);
这是错误的。由于rotate
后面的括号,函数会立即一次又一次地调用自身(无限递归)。删除括号可以解决这个问题,但代码可能无法工作。要修复代码,请使用浏览器的,它接受函数和延迟(以毫秒为单位)作为两个参数:
setTimeout(function() {
Spire.Rotator.rotate();
}, 5000);
为什么不干脆setTimeout(Spire.Rotator.rotate,5000)代码>?原因是该函数中的此
将是窗口
,而不是螺旋旋转器
。(互联网上有这方面的信息。)为什么不setTimeout(“Spire.Rotator.rotate()”,5000)代码>?这是一种非常过时(已弃用)的方法,使用的方法也有同样的问题,包括Douglas Crockford在内的一些JavaScript程序员建议不要使用该函数。不要使用字符串作为设置超时的参数。它是有效的,但容易引用地狱,而且速度也很慢。改用函数:setTimeout(Spire.Rotator.rotate,5000)
不要将字符串用作setTimeout的参数。它是有效的,但容易引用地狱,而且速度也很慢。改用函数:setTimeout(Spire.Rotator.rotate,5000)