是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不知道它是如何调用的,也不知道它来自何处,所以它不知道对象已被销毁。