Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这会导致JavaScript内存泄漏吗?_Javascript_Jquery_Memory Leaks - Fatal编程技术网

这会导致JavaScript内存泄漏吗?

这会导致JavaScript内存泄漏吗?,javascript,jquery,memory-leaks,Javascript,Jquery,Memory Leaks,我在代码中大量使用了几个函数。现在,在我寻找高内存使用率的来源时,我想确保它们不是罪魁祸首 使用jQuery,我绑定并触发body元素上的自定义事件。当一个事件被触发时,我将它存储在一个触发事件列表中。我使用的一个助手函数叫做“waitfor”。下面是一些伪代码: waitfor = function(event, callback){ if(event_has_ever_been_called){ callback(); //RUN IMMEDIATELY } else{

我在代码中大量使用了几个函数。现在,在我寻找高内存使用率的来源时,我想确保它们不是罪魁祸首

使用jQuery,我绑定并触发body元素上的自定义事件。当一个事件被触发时,我将它存储在一个触发事件列表中。我使用的一个助手函数叫做“waitfor”。下面是一些伪代码:

waitfor = function(event, callback){

  if(event_has_ever_been_called){
    callback(); //RUN IMMEDIATELY
  }
  else{
    //BIND CALLBACK TO RUN AS SOON AS THE EVENT IS TRIGGERED
    $("body").bind(event, function(){
      callback();
    });
  }
}
比如说,

//ADD GOOGLE MAP TO PAGE
... listen for the google map 'idle' event, 
... then call $("body").trigger("gmap.ready") 

//ADD MARKERS AS SOON AS POSSIBLE (BUT NOT BEFORE)
waitfor("gmap.ready", function(){
  //add markers
});
这对我来说似乎非常简单,但我有点担心它(或我的任何其他使用匿名回调函数的函数)可能会导致内存使用率高

这些信息是否足以确定此函数是否安全?

您应该在事件触发后调用而不是
bind
来删除处理程序


否则,您的函数及其闭包引用的所有内容将永远被jQuery的处理程序列表引用。

您是否设置了
event\u是否在某个地方被调用过
?不,这就是我所说的“伪代码”——不是实际代码,只是为了给您一个想法。好建议,SLaks——不过,我会在比赛结束后解开它。