我希望 Javascript 代码可以无限地操作 html 中的某些对象,
但是,我只能使用 setTimeout("function()", 0)
而不能使用 while(1)
例子:
同时
:https://gist.github.com/Asoul/e5dd3bd38eef4ca239cb
设置超时
:https://gist.github.com/Asoul/bda34fa2f70e4077ec12
我不知道为什么 while(1)
不能在我的 chrome 上运行
SetTimeout
有时可以工作,但如果我的代码中有很多 setTimeout
或者一些未知原因,它会滞后。
示例:http://www.csie.ntu.edu.tw/~b00902036/run_neo/run_neo.html
(用上、左、右来玩。我努力避免卡顿,但有时还是会发生。)
我想使用纯 CSS,而不是 Canvas ,并且希望游戏可以无延迟地运行。
最佳答案
不能使用 while
的主要原因是 javascript 单线程。如果您使用 while(1)
,该函数将永远不会退出并且所有其他交互都将被卡住。
SetTimeout can work sometimes, but if there are many setTimeout in my code or some unknown reasons, it will lag.
这也是因为javascript的单线程特性,如果有一个函数需要很长时间才能完成,它就会霸占主线程。
want the game can play without lags.
您需要避免在所有函数 内进行长时间运行的操作。如果您无法避免这种情况,请尝试使用 setTimeout
将长时间运行的操作拆分为多个部分。
例如:如果您有一个处理 100 条记录的 for 循环,您可以将其拆分为 10 个单独的迭代。
关于javascript - 想要 Javascript 无限循环运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206635/