首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript可以在运行中的WebAssembly实例上执行函数吗?

JavaScript可以在运行中的WebAssembly实例上执行函数吗?
EN

Stack Overflow用户
提问于 2019-11-12 06:11:07
回答 1查看 216关注 0票数 0

我是一个WebAssembly新手,只是想开始,但我有一个问题,我似乎找不到一个合理的答案。我对如何设计这个软件有一个想法,但我不知道我对WebAssembly的要求是不是错了。

外部JavaScript调用是否会中断WebAssembly?假设我正在运行一个游戏循环来实现一些可视化,并且我想要一个绑定到JavaScript的HTML键来更改当前正在执行的WebAssembly上下文中的一些值。这有可能吗?更新每个帧之间的值并仅使用WebAssembly进行逐帧渲染是否更理想?

问题是,我真的很喜欢像C++这样的其他语言的WebAssembly的针对性,因为我从来没有真正进入过JavaScript或Typescript,我也希望构建一个性能更好的游戏型应用程序。然而,由于我计划让这款游戏成为一个网页游戏,我想看看是否可以在我的UI元素中使用HTML + CSS,而不是将UI复制到WebAssembly中,本质上是把它变成一个糟糕的Java applet。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 07:31:36

是也不是。简而言之,浏览器不能中断长时间运行的WebAssembly代码。

但是,如果您有任何类型的长时间运行的代码,浏览器也不能中断长时间运行的JS代码或传递任何事件。WebAssembly和JS在相同的执行堆栈上执行,并且在web模型中,您需要以合理的间隔返回事件循环。这里推荐的方法(对于JS和WebAssembly代码)是分解您的游戏循环,让它在回调中一次运行一帧。

(有一些方法可以绕过这个问题,比如使用工作者来运行长时间运行的代码,或者使用编译器技巧来分解长时间运行的代码,比如binaryen的asynchify )。

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

https://stackoverflow.com/questions/58809370

复制
相关文章

相似问题

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