Javascript 在Chrome中从睡眠中醒来时变量未定义
使用MacOSX10.8.4,Chrome27(最新版本) 我有一个脚本,它每X秒(使用Javascript 在Chrome中从睡眠中醒来时变量未定义,javascript,jquery,ajax,macos,google-chrome,Javascript,Jquery,Ajax,Macos,Google Chrome,使用MacOSX10.8.4,Chrome27(最新版本) 我有一个脚本,它每X秒(使用setInterval())使用jQuery进行一次AJAX调用,以查看是否仍然存在到服务器的连接(心跳)。它发布一些数据,并根据是否成功调用其他函数 它工作正常,直到我的Mac进入睡眠状态(屏幕变黑、硬盘断电等),我唤醒它,AJAX调用失败,并尝试调用一个显然不再存在的函数(变量): POST http://mywebsite.com/index.php jquery.min.js:4 Uncaught
setInterval()
)使用jQuery进行一次AJAX调用,以查看是否仍然存在到服务器的连接(心跳)。它发布一些数据,并根据是否成功调用其他函数
它工作正常,直到我的Mac进入睡眠状态(屏幕变黑、硬盘断电等),我唤醒它,AJAX调用失败,并尝试调用一个显然不再存在的函数(变量):
POST http://mywebsite.com/index.php jquery.min.js:4
Uncaught TypeError: Cannot call method 'onLost' of undefined
onLost
是其他变量中的函数,例如mylib
和anotherlib
。它们在加载页面时很早就被实例化了。代码要复杂得多,但这里有一个简化版本:
var mylib = new mylib();
mylib.anotherlib = function() { this.onLost = function() { ... }}
setInterval() { function() { $.ajax({ failed: mylib.anotherlib.onLost }); }, 10000);
错误发生后,我的脚本表现正常。它可以访问mylib
和onLost()。我知道当电脑以不同的方式睡眠时,浏览器会执行setTimeout()
和setInterval()
(Chrome是否会暂停或减慢它或其他什么?),但这仍然是一个奇怪的错误
这可能是我调用失败的方式
还是jQuery的$.ajax()
是如何工作的?我们需要更多的上下文来了解mylib
是如何定义的。@Barmar补充道(主要是)。