我担心异步操作是否容易发生内存泄漏。我的上下文是前端和后端(node.js)都使用Javascript
在execute
操作上,将创建一个委托IResponder
。它具有对主模块以及success
和fault
方法的引用。exampleModule
执行asyncOperation
并调用result
的fault
或IResponder
方法。
我的问题是:我希望exampleModule在主例程的末尾被释放,因为我看到闭包等正在进行一些循环引用。请告知或确认。
execute: function() {
var self = this;
function IResponder() {
this.result = function(data) {self.result(data)};
this.fault = function(info) {self.fault(info)};
}
var exampleModule = new ExampleModule();
exampleModule.asyncOperation(new IResponder());//calls back result or fault of IResponder
},
success: function(data) { //is exampleModule deallocated here?
},
fault: function(info) { // //is exampleModule deallocated here?
}
最佳答案
循环引用不会为好的JavaScript垃圾收集器带来问题。
在这种情况下,何时使对象成为合格的解除分配取决于ExampleModule
何时放弃其对IResponder
的引用。
关于javascript - 异步代码会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30222576/