Categories: Angular13 教程

Angular Web Worker

用 Web Worker 处理后台进程

Web Worker 允许你在后台线程中运行 CPU 密集型计算,解放主线程以更新用户界面。如果你发现你的应用会进行很多计算,比如生成 CAD 图纸或进行繁重的几何计算,那么使用 Web Worker 可以帮助你提高应用的性能。

CLI 不支持在 Web Worker 中运行 Angular。

添加一个 Web Worker

要把 Web Worker 添加到现有项目中,请使用 Angular CLI ​ng generate​ 命令。

ng generate web-worker <location>

你可以在应用的任何位置添加 Web Worker。比如,要把一个 Web Worker 添加到根组件 ​src/app/app.component.ts​,请运行如下命令。

ng generate web-worker app

该命令会执行以下操作。

  1. 把你的项目配置为使用 Web Worker,如果还没有的话。
  2. 把如下脚手架代码添加到 ​src/app/app.worker.ts​ 以接收消息。
  3. addEventListener(message, ({ data }) => {
      const response = `worker response to ${data}`;
      postMessage(response);
    });
  4. 把如下脚手架代码添加到 ​src/app/app.component.ts​ 以使用这个 Worker。
  5. if (typeof Worker !== undefined) {
      // Create a new
      const worker = new Worker(new URL(./app.worker, import.meta.url));
      worker.onmessage = ({ data }) => {
        console.log(`page got message: ${data}`);
      };
      worker.postMessage(hello);
    } else {
      // Web workers are not supported in this environment.
      // You should add a fallback so that your program still executes correctly.
    }

生成这个初始脚手架之后,你必须把代码重构成向这个 Worker 发送消息和从 Worker 接收消息,以便使用 Web Worker。

某些环境或平台(比如服务端渲染中使用的 ​@angular/platform-server​ 不支持 Web Worker。为了确保你的应用能够在这些环境中工作,你必须提供一个回退机制来执行本来要由这个 Worker 执行的计算。

admin

这个人很懒,什么都没有留下~

Share
Published by
admin

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago