这.defer(5000)导致too much recursionJavaScript出错.如何将执行延迟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);
}
}
Run Code Online (Sandbox Code Playgroud)
这整行:
Spire.Rotator.rotate().defer(5000);
Run Code Online (Sandbox Code Playgroud)
是错的.由于后面的括号rotate,您的函数会立即反复调用(无限递归).删除括号将解决该问题,但代码可能无法正常工作.要修复代码,请使用浏览器的window.setTimeout方法,该方法接受函数和延迟(以毫秒为单位)作为两个参数:
setTimeout(function() {
Spire.Rotator.rotate();
}, 5000);
Run Code Online (Sandbox Code Playgroud)
为什么不setTimeout(Spire.Rotator.rotate, 5000);呢?原因在于,this该功能window不是Spire.Rotator.(互联网上有很多关于此的信息.)为什么不setTimeout("Spire.Rotator.rotate()", 5000);呢?这是一种非常过时(弃用)的方法,可以使用与eval相同的陷阱的方法,这是一些包括Douglas Crockford建议不使用的JavaScript程序员的功能.
| 归档时间: |
|
| 查看次数: |
780 次 |
| 最近记录: |