如何最好地在JavaScript中实现轮询使用者模式
背景
回到5月份,我在WebKit上报告了有关内存保留问题的问题。看起来这个问题可能是由于Web Inspector本身造成的,但我还是不相信。
问题
出现了一个问题,我的JavaScript应用程序实现了“轮询消费者”模式,以便在数据可用时获取数据。问题在于记忆被保留并在一天中增长。 JavaScript逻辑如下:
获取数据并给我回电话
当我回电话处理数据时
然后执行第1步
这是在JavaScript中实现轮询消费者的合理方式吗?顺便说一下,我正在使用jQuery的ajax函数,当然这可能有它自己的问题。另外我使用jQuery代理作为成功处理程序,所以我认为通过范围保留应该不是问题。我没有使用代理也观察到了这个问题。一些代码:
FidsDataController.prototype.getFids = function() {
var self = this;
$.ajax({
...
success: function(data) {
// Do some processing
// Call back in a short while...
setTimeout($.proxy(self.getFids, self), 100);
},
...
});
);
没有找到相关结果
已邀请:
1 个回复
部窖空
,这很好,但每次调用你都会创建两个新函数:一个用于成功处理程序,另一个用于
调用。这两个函数并非每次调用都是唯一的。将它们放在可重复使用的变量中,您将节省大量额外的功能,这将大大降低您的内存泄漏潜力。 我们在构造函数中为每个对象创建每个函数的代理版本的示例。重复调用不会产生更多功能: