javascript - 在 CPU 密集型 WASM 调用期间对 DOM 的更新不可见
问题描述
有一个 WASM 程序在我的机器上运行大约需要 12 秒。为了让用户留在网站上,最好表明该程序正在取得进展。我将在 C++ WASM 代码中使用的一些调用插入EM_ASM_(...)
到一个 JS 函数中,该函数相当于:
function updateStatus(number) {
console.log("status: ", number);
document.getElementById("status").innerHTML = "Status: " + number;
}
当控制台获得实时更新时,“状态”DOM 元素在 WASM 代码完成之前不会更新。
我尝试在 C++ 代码sleep(1)
中调用之后添加updateStatus()
,但这并没有导致更新。
解决方案
JavaScript 运行时让给 WebAssembly,这解释了为什么 UI 没有更新。要实现您的目标,您需要在 Web Worker 中运行您的代码。
推荐阅读
- xpages - 从视图中的类别填充组合框
- php - ACF/load_field 不适用于自定义帖子对象
- ios - IOS AppStore - 仅带有 webview 的简单应用程序
- json - 如何将原始 json 从 url 转换为 json 或 csv?
- smt - 如何将 64 位整数与 boolector 一起使用
- javascript - 将 Ajax 回调函数值分配给 javascript 变量
- excel - Excel中的分组和sumproduct
- android - Lcom/google/android/libraries/maps/R$string 类中没有类型 I 的静态字段 MAP_COPYRIGHTS_FULL;或其超类
- android - 自定义 Azure AD B2C 的登录流程 - 无需用户/密码即可使用
- c# - 我在 HTML 页面上从 GenericIdentity 转换为 FormsIdentity 时遇到问题