开发者

Could this cause a JavaScript memory leak?

开发者 https://www.devze.com 2023-03-20 08:09 出处:网络
I use a couple of functions heavily in my code. Now, as I\'m looking for the source of high memory usage, I want to ensure that they\'re not the culprits.

I use a couple of functions heavily in my code. Now, as I'm looking for the source of high memory usage, I want to ensure that they're not the culprits.

Using jQuery, I bind and trigger custom events on the body element. When an event is triggered, I store it in a list of triggered events. One of the helper functions I use is called "waitfor". Here's some pseudocode:

waitfor = function(event, callback){

  if(event_has_ever_been_called){
    callback(); //RUN IMMEDIATELY
  }
  else{
    //BIND CALLBACK TO RUN A开发者_运维问答S SOON AS THE EVENT IS TRIGGERED
    $("body").bind(event, function(){
      callback();
    });
  }
}

For example,

//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
});

This seems very straightforward to me but I'm a little concerned that it (or any of my other functions that use anonymous callback functions) could be causing high memory usage.

Is this sufficient information to determine that this function is safe / not safe?


You should call one instead of bind to remove the handler after the event fires.

Otherwise, your function, and everything referenced by its closure, will stay referenced forever by jQuery's handler list.

0

精彩评论

暂无评论...
验证码 换一张
取 消