我正在开发一个使用phonegap和jquerymobile的webworks应用程序。我使用soapclient.js向后端服务器创建soap请求。我们面临超时问题,在详细调查期间,我们注意到第11次ajax请求始终没有得到响应。为了把事情放在正确的位置,我们用相同的调用重复了测试,这样我们就知道特定的请求是有效的。
我们使用低端自创建的xmlhttprequest对象,直到send()调用才会出现错误。第11次呼叫时,只需状态变化侦听器就不会被呼叫。
偶尔,当我们等得够久的时候,这个第11个电话确实在大约5分钟内就被兑现了,这让我相信在BlackBerry浏览器领域存在连接泄漏。
我怀疑有一个限制的10连接(非平行),可以作出。当BB垃圾清除触发器时,它会清除很少的旧连接--等待队列中的新连接将被执行。
更多信息
为止。
如果请求通过调用abort()并将其设置为null来传递超时时间,则尝试中止该请求。但即便如此,如果我不等待一段时间,我也无法提出第11次请求。
如果这种行为是随机的,我会相信任何其他原因,比如javascript等待UI线程等等。但是在第11次请求时它是99%的可重现性,我已经多次检查了代码,看看是否有任何变量或计数从应用程序中被告知。警报在.send之前可以正常工作,但回调不会被调用。
现在,我正在尝试创建一个非常简单的应用程序,它可以进行ajax调用,查看此行为是否特定于我的应用程序,还是平台约束,但是如果有人以前有过这样的经验,请与我们分享。
发布于 2012-05-30 04:40:21
最后,经过一天的挣扎,我们发现这是由于将javascript函数分配给硬件键而发生的。由于我们在不同的jQuery页面下使用不同的菜单项,因此菜单按钮绑定到不同活动上的不同javascript函数,从而导致BB WebWorks应用程序中内存泄漏。当我们将菜单硬件按钮绑定到全局变量并继续替换其赋值,而不是一次又一次地回忆bind时,我们就解决了这个问题。
https://stackoverflow.com/questions/8851432
复制相似问题