Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将子对象的父对象添加到侦听器会导致Node.js中出现保留循环吗?_Javascript_Node.js_Events_Eventemitter_Retain Cycle - Fatal编程技术网

Javascript 将子对象的父对象添加到侦听器会导致Node.js中出现保留循环吗?

Javascript 将子对象的父对象添加到侦听器会导致Node.js中出现保留循环吗?,javascript,node.js,events,eventemitter,retain-cycle,Javascript,Node.js,Events,Eventemitter,Retain Cycle,我对Node.js中的retain cycles不是很熟悉,它更多地来自Objective-C/iOS,但我编写了一些代码,希望不会导致retain cycle。我不知道V8在处理垃圾收集方面有多聪明,或者我在这方面应该有多聪明 在我的示例中,我创建了一个对象,该对象应该负责建立数据连接并将该数据反馈给父对象。为此,我使用EventEmitter.on函数注册父对象函数。当所有数据都被处理时,父对象被释放,但在这之后,会在父对象和子对象之间创建一个保留周期吗? 示例代码 // Create th

我对Node.js中的retain cycles不是很熟悉,它更多地来自Objective-C/iOS,但我编写了一些代码,希望不会导致retain cycle。我不知道V8在处理垃圾收集方面有多聪明,或者我在这方面应该有多聪明

在我的示例中,我创建了一个对象,该对象应该负责建立数据连接并将该数据反馈给父对象。为此,我使用EventEmitter.on函数注册父对象函数。当所有数据都被处理时,父对象被释放,但在这之后,会在父对象和子对象之间创建一个保留周期吗? 示例代码

// Create the SonarData with the necessary information
this.sonardata = new SonarData( this.key, this.size )

// Hook events
.on( 'error', this.handleError.bind( this ) )
.on( 'done', this.handleDone.bind( this ) )
.on( 'data', this.handleData.bind( this ) );

释放父对象时,如果没有对子对象的其他引用,并且子对象上没有活动的消息处理程序,那么子对象将被垃圾收集。Javascript垃圾收集器没有保留周期的问题。它们通过代码是否仍然可以被任何其他活动代码访问来工作


因此,两个对象彼此引用,但都不能被其他代码访问,将成功地进行垃圾收集。

垃圾收集器处理循环。这是他们观点的一部分。ARC不同于GC。