我担心异步操作是否容易发生内存泄漏。我的上下文是前端和后端(node.js)都使用Javascript

execute操作上,将创建一个委托IResponder。它具有对主模块以及successfault方法的引用。

exampleModule执行asyncOperation并调用resultfaultIResponder方法。

我的问题是:我希望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/

10-10 00:41