0

使用 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);

错误发生后,我的脚本表现正常。它可以访问mylib并且onLost()很好。我知道浏览器实现setTimeout()以及setInterval()计算机何时以不同的方式睡眠(Chrome 不会暂停它或减慢它的速度吗?),但这仍然是一个奇怪的错误。

可能是我打电话的方式failed还是jQuery的$.ajax()做事方式?

4

0 回答 0