Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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';当父对象被销毁时,是否终止了setInterval?_Javascript_Node.js - Fatal编程技术网

是Javascript';当父对象被销毁时,是否终止了setInterval?

是Javascript';当父对象被销毁时,是否终止了setInterval?,javascript,node.js,Javascript,Node.js,我有一个全局变量 global.loggedInUsers={}。此对象用作,字典由唯一的键:值对占用 键是唯一的,值是account对象 function Account(hash, jsonData) { this.hash = hash; this.accountJson = JSON.parse(jsonData); this.pongUpdate = 20; setInterval(function() { // Stuff happens here blah

我有一个全局变量
global.loggedInUsers={}。此对象用作,字典由唯一的
键:值对占用

键是唯一的,值是account对象

function Account(hash, jsonData) {
  this.hash = hash;
  this.accountJson = JSON.parse(jsonData);
  this.pongUpdate = 20;
  setInterval(function() {
    // Stuff happens here blah blah
  }, 1000);
}

Account.protoype....
在代码中的某个时刻,我最终调用了delete函数

delete(loggedInUsers.key);

因为
Account
类封装了
setInterval
调用,如果
Account
对象被删除,setInterval会停止还是必须将setInterval存储在变量中,并将其处理在析构函数中?

存在对
setInterval
中函数的引用,由于您没有使用
clearInterval
,它将继续运行

var t=1;
功能帐户(){
this.a=setInterval(函数(){
console.log('a'+t)
t+=1
}, 1000);
}
a=新账户();
setTimeout(函数(){
删除(a)

},3000)
存在对
setInterval
中函数的引用,并且由于您没有使用
clearInterval
,它将继续运行

var t=1;
功能帐户(){
this.a=setInterval(函数(){
console.log('a'+t)
t+=1
}, 1000);
}
a=新账户();
setTimeout(函数(){
删除(a)

},3000)
制作一个测试用例并找出。。。回答:它一直在运行……我打算像@epascarello那样评论,因为事件循环非常不透明。我刚刚阅读了mozillas和node.js文档,他们没有提到任何关于setInterval是如何安排的。不幸的是,最简单的方法通常是测试:(自己观察一下谢谢你们的帮助@dm03514我最不想做的事情就是创建一个单元测试,因为代码有多大。代码可以工作,但我正在尝试优化它。我在发布问题之前也阅读了文档,但没有下结论。好的,谢谢你们,我将建立一个简单的单元测试类,并了解我自己。Ac实际上,严格地说,这个题目的答案是肯定的;-)因为setInterval是一种窗口/全局对象的方法。制作一个测试用例并找出…回答它一直在运行…我打算像@epascarello那样进行评论,因为事件循环非常不透明。我只是阅读了mozillas和node.js文档,他们没有提到任何关于setInterval是如何安排的。不幸的是,最简单的y通常是一个测试:(自己观察一下谢谢你们的帮助@dm03514我最不想做的事情就是创建一个单元测试,因为代码有多大。代码可以工作,但我正在尝试优化它。我在发布问题之前也阅读了文档,但没有下结论。好的,谢谢你们,我将建立一个简单的单元测试类,并了解我自己。Ac实际上,严格地说,标题的答案是肯定的;-)因为setInterval是一种窗口/全局对象的方法。感谢您为我节省了单元测试时间。我可以问一下为什么setInterval没有与类一起销毁吗?只要您没有调用
clearInterval
,就没有clear。该函数有一个参考(从当前的
窗口/应用程序
)作用域,它将继续运行。啊,它是从
窗口/应用程序
引用的,这很有意义。谢谢!@Mozzie setInterval不知道它是如何调用的,也不知道它来自何处,所以它不知道该对象已被销毁。感谢您为我节省了单元测试时间。我可以问一下为什么setInterval不随类一起销毁吗?正如我所说的由于您没有调用
clearInterval
-因此没有clear。该函数有一个引用(来自当前
窗口/应用程序
)范围,它将继续运行。啊,它是从
窗口/应用程序
引用的,这很有意义。谢谢!@Mozzie setInterval不知道它是如何调用的,也不知道它来自何处,所以它不知道对象已被销毁。