首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程或不多线程- JavaScript

多线程或不多线程- JavaScript
EN

Stack Overflow用户
提问于 2013-03-22 05:31:42
回答 2查看 193关注 0票数 1

我目前正在试验一款类似太空入侵者的JavaScript射击游戏。它现在的编码方式,要么是带有移动的投射物,要么是飞船。任何玩过原版的人都会知道这并不好。我记得在我的Java类中复习了多线程,我想知道这是不是正确的方法,还是有其他方法可以做到这一点?例如:

代码语言:javascript
复制
Thread Move start;
Thread Move run;
Thread Shoot start;
Thread Move run;
Thread Shoot run;
Thread Shoot end;
Thread Move run;
Thread Move end;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-22 05:42:19

你可以在Javascript中使用WebWorkers,但它们与真正的多线程环境不同,就像在java中一样。你将不得不采取一种不同的方法来开发你的游戏,使用一种轮询技术在同一线程下更新你的游戏逻辑,抱歉。:(在javascript中添加的对线程的支持仍然是非常笨拙的,在我看来几乎是一个花招,唯一存在的是Chrome,因为你不一定要复制所有传递到线程的数据。这就是为什么javascript中的线程会受到限制:

  1. 无法真正访问dom
  2. 大多数(取决于引擎)数据必须复制到其他线程,这意味着如果您想在后台处理大量数据,则必须先对该数据执行复制
  3. WebWorkers上的错误并不总是完全明显(有时您会随机出现,难以理解错误)

WebWorkers有很大的潜力,但对我来说,它们的使用受到目前所受限制的严重限制。也许你可以在你的游戏中发现它们的巧妙用法。

票数 2
EN

Stack Overflow用户

发布于 2013-03-22 05:44:10

传统上,JavaScript是单线程的,所以使用您在Java语言中习惯的线程是不可行的。JavaScript的一个相对较新的补充是web workers (spec here),它提供真正的多线程。然而,support among browsers在某种程度上是可变的,您受到工作线程所能做的工作的限制,并且线程之间的通信是痛苦的。

您还可以使用诸如Clumpy.js之类的东西来模拟异步执行。

无论你做什么,重要的是不要阻塞主线程。整个浏览器窗口将变得无响应。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15558563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档