在执行繁重的 JavaScript 处理时强制 HTML5 画布重绘?

2023-12-26

这个问题与这位较老的, https://stackoverflow.com/questions/1209689/how-can-i-force-the-browser-to-redraw-while-my-script-is-doing-some-heavy-process但在开始对代码进行重大更改之前,我想确保我得到了正确的答案。

我正在开发一个计算密集型的 JavaScript 程序,该程序需要不断更新 HTML5 画布中的图像来绘制动画。正如现在所写,代码在紧密循环中绘制动画的所有帧,而不将控制权返回给浏览器,这意味着最终显示的只是最终帧。我很确定解决此问题的唯一方法是将动画代码分割成更小的片段,这些片段可以通过超时事件重入调用。它是否正确?或者有没有办法强制画布在某个时刻显示其内容,即使是在紧密的 JavaScript 循环中间?


我很确定解决此问题的唯一方法是将动画代码分割成更小的片段,这些片段可以通过超时事件重入调用。它是否正确?

This is正确的。

Javascript 是单线程的,因此在执行逻辑时无法发生任何其他事情。您唯一的选择是通过将逻辑拆分为要在超时时执行的微块来“模拟”线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在执行繁重的 JavaScript 处理时强制 HTML5 画布重绘? 的相关文章

  • VueJS - 验证表单文件上传中的文件大小要求

    我正在使用 Bootstrap Vue 表单制作一个简单的表单 用户可以在其中上传文件 有没有办法验证使用 Vue 表单选择的文件的大小 我想阻止用户上传此类文件 我见过this https stackoverflow com questi
  • Angular 2延迟加载模块-服务不是单例

    我已经在我的应用程序中实现了延迟加载模块 app module ts 配置正确 NgModule declarations AppComponent HeaderComponent HomeComponent imports Browser
  • 使用 Javascript 在前端创建基本 URL(开发、API 和生产)

    无论开发和部署如何 如何制作适用于 http https localhost 端口和实际域的基本 url 我想创建一个可以在所有场景或条件下工作的基本 url 无论 http https 协议 端口 本地主机和实际域如何 无论是在开发中还是
  • 使用 javascript 在 IFrame 中打印 PDF 文件仅获取一页

    这是我打印 pdf 文件的代码 在这里 在打印时我只得到一页 我需要一个解决方案 function printPdf var ifr document getElementById frame1 PDF is completely load
  • MongoDB:如何在更新之前对查询进行排序

    我正在编写一个 Meteor Node js 应用程序 它在后端使用 MongoDB 在我的代码中的某个时刻 我需要更新specific集合中的文档 我需要使用 Mongo 的 update 方法 但我在传递正确的 复杂的 查询以缩小到该特
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • Facebook Instant Game - 上传捆绑的 zip 文件会导致 Web 托管出现 SDK 参考错误

    当我尝试上传简单的游戏 应用程序时 我收到一条错误消息 游戏必须通过我们的 CDN 引用我们支持的 SDK 之一 不过我已经给出了 SDK 参考 难道不是这个吗 我也浏览了 facebook 文档的 SDK 参考 但它对我不起作用 有人以前
  • 在 MongoDB 中对 Null 值进行最后排序

    我使用以下查询根据名为 sortIndex 的字段按升序填充 MongoDB 中的项目 有时 数据库中的项目没有 sortIndex 字段 通过以下查询 具有 null sortIndex 的项目显示在顶部 我想知道如何让它们显示在底部 我
  • 正则表达式匹配除括号中的单词之外的所有单词 - javascript

    我使用以下正则表达式来匹配所有单词 mystr replace W s g function match p1 index title 请注意 单词可以包含特殊字符 例如德语变音符号 如何匹配除括号内的单词之外的所有单词 如果我有以下字符串
  • 如何以编程方式确定 HTML 对象可以侦听哪些事件?

    我一直在查看developer mozilla org 和Apple 开发文档上的文档 但我找不到解释是否可以通过编程方式确定特定HTML 标记是否支持给定事件监听器的文档 就像我知道的那样
  • 如何调试使用 Testaulous (Karma) 运行的 Jasmine 规范?

    我有一个具有 Jasmine 规格的小项目 我使用 Testaulous 作为我的测试运行程序 我不明白如何调试应用程序代码或规范代码 当我尝试在 Chrome 开发工具中设置断点时 下次规范运行时不会命中它 因为它每次都会使用新的查询字符
  • chrome.extension.getBackgroundPage() 函数示例

    我正在开发一个需要在后台运行的小型 Chrome 扩展 但是 我知道当我使用弹出窗口时这是不可能的 经过一番阅读后 似乎最好的选择是创建popup js为了运行background js using chrome extension get
  • 您可以编写期望抛出异常的异步测试吗?

    我正在编写一个异步测试 期望异步函数像这样抛出 it expects to have failed async gt let getBadResults async gt await failingAsyncTest expect awai
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • 对数组进行分组并获取计数[重复]

    这个问题在这里已经有答案了 假设我有这样的数组 foo bar foo bar bar bar zoom 我想将其分组 这样我就可以得到这样的计数 foo 2 bar 4 zoom 1 有没有一个实用程序可以做到这一点 只需使用该功能Arr
  • Vim、Javascript、DoctorJS (jsctags) 和 Taglist(源代码浏览)

    我已经安装了DoctorJS http doctorjs org 之前jsctags 试图为 Vim 获得一些好的源代码浏览 标签列表 使用Taglist http www vim org scripts script php script
  • 将 SVG 下载为 PNG 图像

    我想将 HTML 页面中的 SVG 元素下载为 PNG 格式 我尝试了此操作 但下载了一个空白的 PNG 图像 如何将我的 HTML SVG 下载为 PNG 我用过这个https bl ocks org biovisualize 81878
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 需要在 javascript 中对 ajax 查询进行正确的修剪吗?

    在 JavaScript 中 我想对字符串末尾的所有特殊字符进行正确的修剪 我的一段代码仅对连字符 进行修剪 还需要所有特殊字符 var s DB var x s replace console log x 对此有什么帮助吗 这应该可以解决
  • JavaScript - 替换 html 字符串中的特定单词索引

    我在 JS 字符串操作方面面临着一项具有挑战性的任务 有一个 HTML 字符串 我需要在其中替换特定单词索引处的单词 单词索引是忽略 HTML 标签时单词的编号 例如 下面是 HTML 字符串 span style font family

随机推荐

  • 参数不是 NaNunction,未定义

    我正在从 AngularJS 1 2 26 迁移到 1 3 2 并收到 这不是最好的错误消息 但看起来好像是说我的控制器未定义 我可以不再以这种方式定义控制器吗 错误 错误 areq 糟糕的论点 参数 welcomeController 不
  • 无法让 cocoon 在 Ruby on Rails 4 上工作

    在过去的几个小时里 我一直在努力让这个工作正常进行 但由于某种原因我做不到 我几乎完全按照 github 存储库链接上指示的步骤进行操作 我使用以下所有步骤创建了一个新应用程序 rails new demo app cd demo app
  • Firemonkey ScrollBox 错误

    我们在 Firemonkey 的 ScrollBox 组件中遇到了一个奇怪的错误 因为TGrid继承自TScrollBox它也会影响所有网格 在我们的一些开发机器上 一切正常 而在其他机器上 就会出现错误 我们未能检测到系统之间的任何模式
  • 在 /admin/ 安装 jinja2 TemplateDoesNotExist 后

    我已经安装了 jinja2 之后 DIRS 停止工作 我必须手动包含它们 更改 APP DIRS 没有帮助 模板看起来像这样 TEMPLATES BACKEND django template backends jinja2 Jinja2
  • LESS - 多个不同的类具有相同的风格?

    你会如何用 LESS 写出下面这种风格 nav a hover nav a focus footer a hover footer a focus fullscreen container a hover fullscreen contai
  • Ansible:如何将默认值应用于列表的每个复杂参数

    我有以下列表和默认变量 my list complex key1 val1 key2 val2 key3 val3 keyN valN key1 val1 key3 val3 keyN valN key2 default2 key3 def
  • 如何确定Microsoft Edge是否是默认浏览器?

    是否有可靠的编程方式来确定 Microsoft Edge 是默认浏览器 我知道一种选择是使用IApplicationAssociationRegistration QueryCurrentDefault https msdn microso
  • 如何在 Laravel 9 Validation 中实现上述验证?

    我正在尝试实现某些 Laravel 验证标准 但我很难实现这些标准 请同样帮助我 我正在使用 laravel 9 和 PHP 8 1 描述 我有一个 API 其中包含以下提到的输入 A 公司名称 必填b company number 根据条
  • 使用 telegram bot API 创建新组

    如何使用 Telegram 中的机器人创建新群组 据我所知 机器人本身无法做到这一点 那么是否有可能将机器人实现为常规程序user How Update 这就是我要的http t me polyglossia http t me polyg
  • 为数据网格行创建上下文菜单

    我有一个可能有很多行的数据网格 当用户右键单击其中一行时 我需要为每一行显示一个上下文菜单 并在用户单击该选项时执行一个操作 相同的操作 但根据当前选定的行不同的数据项 对此最好的策略是什么 我担心每一行的 ContextMenu 都太过分
  • preRenderView 禁用 ajax

  • typedef struct 与 Object - 优点

    我计划定义一个类 其属性中包含 x y 网格的坐标 但是 我不确定实现此设计的 最佳 方法 这是一个很简单的问题 我只想正确地做并有一个理由 一种解决方案是拥有两个属性 类型为 int 一个用于 x 一个用于 y 在对象内 另一种是定义一个
  • 在 Django 中获取自己的应用程序

    有没有一种方法可以获取属于 Django 项目本身的应用程序列表 忽略安装的应用程序 pip 换句话说 我可以排除安装的应用程序吗 pip from settings INSTALLED APPS 您可以使用以下方式获取所有 django
  • app.listen() 和 app.get() 如何在express和hapi上工作

    使用 http 节点模块 仅限本机模块 我如何重新创建 app listen 和 app get 使用带有构造函数的 http 模块 var app function opts this token opts token app proto
  • 如何更改azure函数的python版本

    当我发布我的天蓝色云函数时 我收到消息 本地 python 版本 3 9 7 与部署的 Function App 的预期版本不同 这可能会导致 Azure Functions 中出现 ModuleNotFound 错误 请创建版本 3 9
  • 重定向路由严格斜杠

    我尝试对 webapp2 重定向路由使用严格斜杠 但收到此值错误 ValueError Routes with strict slash must have a name 这是我的路线之一的示例 RedirectRoute r handle
  • Perl 6 的 shell() 使用哪个 shell?

    Perl 6 的shell https docs perl6 org routine shell向 shell 发送命令 但没有说明那是什么 我一直得到bash在我的机器上 但我不知道我是否可以信赖它 perl6 e shell Q ech
  • 返回对象的保留/释放

    我是 Objective C 的新手 所以这可能是一个愚蠢的问题 我不禁看到 ObjC 和 Microsoft 的 COM 在内存管理方面的相似之处 AddRef Release vs retain release 在 COM 环境中 或多
  • 从推送通知打开 Android 应用程序

    有一个小问题一直困扰着我 我已将应用程序设置为接收来自 Urban Airship 的推送通知 一切正常 但是当我点击通知中心中的通知时 没有任何反应 我希望我的应用程序在用户点击推送通知时打开 我该怎么做才能实现此目的 一如既往 我们非常
  • 在执行繁重的 JavaScript 处理时强制 HTML5 画布重绘?

    这个问题与这位较老的 https stackoverflow com questions 1209689 how can i force the browser to redraw while my script is doing some