我担心异步操作是否容易出现内存泄漏。我的上下文是前端和后端都使用的 Javascript (node.js)
在execute
操作中,创建了一个委托(delegate)IResponder
。它包含对主模块的引用,以及 success
和 fault
方法。
exampleModule
执行 asyncOperation
并调用 IResponder 的
。 result
或 fault
方法
我的问题是:我希望 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/