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

时间:2016-09-08 08:48:01

标签: javascript

上下文: 我只是为了好玩而搞乱游戏创意,而且我用html5的画布和javascript来做这件事,仅仅是因为我想在练习的同时愚弄我。 / p>

问题: 在我的游戏中,有很多事情会在不同的时间发生,并且不断创造新的事物。只要它在几秒钟内就不需要精确度。

我的第一个想法就是有一个数组,手动排序,通过根据执行时间插入新任务,然后我会在超时时设置一个函数,它会抓住新任务,处理它,得到下一个问题的时间,并等待超时,当添加一个新项目时,它将检查它是否是新的第一个,并适当地更改超时。

这听起来比现在复杂。

但后来我开始怀疑......设置许多计时器会有什么陷阱? 起初我认为设置很多计时器是一个坏主意,但后来我开始怀疑浏览器是否可能按照我上面说的相同方式处理时间,或者其他一些有效的方法。

基本上,总结一下我的担忧: 使用多个超时有什么问题,而不是一个接一个地做。 这种方法有什么缺陷吗?或任何"陷阱"

先谢谢!

2 个答案:

答案 0 :(得分:1)

在我的头脑中,你应该记住的一件事是,一个超时是你必须分配的一个变量。如果要在触发之前取消该超时,则需要使用其句柄clearTimeout()。如果您有许多代码,您的代码可能会让您感到困惑。

此外,Javascript是单线程的,因此不能同时执行任何操作。当然,它足够快,感觉瞬间,但堆叠顺序不会有任何不同。

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

答案 1 :(得分:0)

设置多个超时不会影响您的性能,因此您应该不再担心这一点。 Node.js在内部handles timeouts in a similar manner to yours idea。如果您想查看一些示例,请查看以下代码段:



#include <stdio.h>
#include <stdlib.h>
#include "qdbmp.h"

void main() {

BMP* image = BMP_Create(640,480,8);
int i,j;

for(i=0;i<640;i++){
    for(j=0;j<640;j++){
        BMP_SetPixelRGB(image,i,j,10,20,100);
    }
}   

BMP_WriteFile(image,"image.bmp");
BMP_Free(image);
&#13;
&#13;
&#13;

理想情况下,它的执行时间应该只需要1000毫秒,正如您所看到的,实际结果与此相差不远。