【问题标题】:createImagebitmap on main thread?在主线程上创建图像位图?
【发布时间】:2020-06-11 19:45:31
【问题描述】:

我在替换纹理时遇到了滞后问题,因此我决定使用 createImagebitmap(它没有帮助)。据我所知,它应该在单独的线程上工作,而不是在主线程上。在使用开发工具性能部分时,它会在主线程上工作时显示。那是对的吗? (我在 Chrome 上使用 angular+pixi.js)

【问题讨论】:

    标签: javascript angular bitmap pixi.js


    【解决方案1】:

    Javascript 是一种单线程语言。这意味着它有一个调用栈和一个内存堆。正如预期的那样,它按顺序执行代码,并且必须在执行下一段代码之前完成一段代码。请看:https://dev.to/steelvoltage/if-javascript-is-single-threaded-how-is-it-asynchronous-56gd

    HTML5 和 CSS3 是多线程的,但 javascript 不是。

    【讨论】:

    • 我明白,但是在解码时不应该在分离的工作人员中使用 createImagebitmap ,如此处所述developers.google.com/web/updates/2016/03/… ?
    • @majkel 您是否为此创建了一个单独的 WebWorker?除非您使用的浏览器支持 WebWorkers 并且专门创建 WebWorkers 来处理调用,否则它不会使用后台线程:developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/…
    • 我明白了。我认为使用 createImagebitmap 可以保证在后台线程上处理它。你有什么建议我可以做些什么来摆脱滞后?我应该创建手动工作者(如果有的话)?
    • 大多数现代浏览器都支持 WebWorkers,因此这将是一种支持它的便捷方式。根据您的应用程序,您可能能够预加载图像并保持它们缓存(以防止重新渲染)。实际上,您从一开始就尽可能多地加载,然后隐藏您不需要的内容,直到您使用它。根据您的应用程序,另一种可能的选择是尽可能多地使用 CSS 进行更新/渲染。由于 CSS 是多线程的,它允许在不干扰核心 javascript 的情况下进行无缝的视觉更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多