Javascript中的多个超时或多个调用

Javascript中的多个超时或多个调用,javascript,Javascript,背景: 我在玩弄一个游戏创意,只是为了好玩,我在html5的画布和javascript中玩,只是因为我想在玩弄的时候练习一下 问题: 在我的游戏中,有很多事情会在不同的时间发生,而新的事情会不断地被创造出来。精度是不必要的,只要在几秒钟之内 我的第一个想法是简单地创建一个数组,手动排序,根据新任务的执行时间插入新任务,然后将函数设置为超时,它将抓取新任务,处理它,获取下一个任务的时间,并等待超时,当添加一个新项目时,它将检查它是否是第一行中的新项目,并适当地更改超时 听起来比实际情况更复杂 但后

背景: 我在玩弄一个游戏创意,只是为了好玩,我在html5的画布和javascript中玩,只是因为我想在玩弄的时候练习一下

问题: 在我的游戏中,有很多事情会在不同的时间发生,而新的事情会不断地被创造出来。精度是不必要的,只要在几秒钟之内

我的第一个想法是简单地创建一个数组,手动排序,根据新任务的执行时间插入新任务,然后将函数设置为超时,它将抓取新任务,处理它,获取下一个任务的时间,并等待超时,当添加一个新项目时,它将检查它是否是第一行中的新项目,并适当地更改超时

听起来比实际情况更复杂

但后来我开始怀疑。。。。设置许多计时器会有什么陷阱? 起初,我认为设置很多计时器是个坏主意,但后来我开始怀疑浏览器是否可以像我上面所说的那样处理时间,或者其他有效的方式

因此,概括一下我的担忧: 使用多个超时与一个接一个地执行超时相比有什么问题。 这种方法有什么缺陷吗?或任何“陷阱”


提前感谢

恕我直言,有一件事你应该记住,一个超时是你必须分配的一个变量。如果要在超时触发之前取消该超时,则需要清除超时()及其句柄。如果你有很多这样的代码,你的代码可能会变得很混乱

此外,Javascript是单线程的,因此不能同时执行任何操作。当然,它的速度足够快,可以让人感觉即时,但拥有堆栈顺序并没有什么不同


在一天结束时,您可以选择以自己最喜欢的方式编写代码,因此您是选择执行一个大型全局处理功能还是多个小型专用处理功能取决于您:)

设置多个超时不会影响您的性能,因此您不必再担心这一点。内部是Node.js。如果您想查看一些示例,请查看以下代码段:

let count=10000;
控制台时间(“总时间”)
for(设i=0;i{
如果(--count==0){
console.timeEnd(“总时间”)
}
},i/10);//为每毫秒设置10个超时

}
我理解所有这些,是的,但我担心,超时在幕后如何运作是我的问题,可能会耗费大量资源之类的。感谢你的想法,它帮助我了解了它的工作原理。据我所知,浏览器的计时器线程中有内部超时,这与js线程是分开的。它们会按顺序倒计时,一旦完成,就会将回调放在js线程中。[编辑:因此,如果您担心性能,在您拥有数千个之前,这绝对不是问题;)]不确定这是否是您的选项,但可能您可以使用一个超时创建递归,并使用它调用多个函数,类似这样。您也可以使用
requestAnimationFrame