在Chrome中从睡眠状态唤醒时变量未定义

时间:2013-07-11 02:40:44

标签: javascript jquery ajax macos google-chrome

使用Mac OS X 10.8.4,Chrome 27(最新稳定版)。

我有一个脚本,每X秒(使用setInterval())与jQuery进行AJAX调用,以查看是否仍然存在与服务器的连接(心跳)。它会发布一些数据,并根据它是否成功,调用其他函数。

它工作正常直到我的Mac进入睡眠状态(屏幕黑屏,硬盘关机等),我将其唤醒并且AJAX调用失败并尝试调用一个函数(变量)显然不再存在:

POST http://mywebsite.com/index.php  jquery.min.js:4
Uncaught TypeError: Cannot call method 'onLost' of undefined

onLost是其他变量中的函数,例如mylibanotherlib。它们在加载页面时很早就被实例化了。代码要复杂得多,但这是一个简化版本:

var mylib = new mylib();

mylib.anotherlib = function() { this.onLost = function() { ... }}

setInterval() { function() { $.ajax({ failed: mylib.anotherlib.onLost }); }, 10000);

发生错误后,我的脚本正常运行。它可以访问mylibonLost()就好了。我知道当计算机以不同的方式睡眠时,浏览器会实现setTimeout()setInterval()(Chrome不会将其暂停或放慢速度等等),但这仍然是一个奇怪的错误。

这可能是我调用failed的方式,还是jQuery的$.ajax()如何做到这一点?

0 个答案:

没有答案