异步代码会导致内存泄漏吗?

Does asynchronous code cause memory leaks?

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

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

exampleModule执行asyncOperation并调用IResponderresultfault方法。

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