angular - 在 Angular 应用程序中使用模块中的代码的 Web 工作者
问题描述
我有一个角度应用程序,我需要使用 web worker 来执行一些代码,但代码依赖于某个模块。
工人是这样初始化的,如果不需要外部模块,它可以正常工作
var worker = new Worker('data:text/javascript;base64,' + btoa('self.postMessage((' + String(code) + '\n)());'));
code
函数参考在哪里。
那么我怎样才能使这项工作呢?最好没有实时加载模块。
解决方案
您必须从您的工作人员定义一个模块(文件)并导入您需要的外部模块。像这样:
外部模块.js:
var value = "my value";
module.exports = value;
worker.js
var value = require('./outermodule');
addEventListener('message', ({ data }) => {
const response = `worker response: ${value}` ;
postMessage(response);
});
主线程:index.js
const worker = new Worker('./worker', { type: 'module' });
worker.onmessage = ({ data }) => {
console.log(`got message from worker: ${data}`);
};
worker.postMessage('hello');
阅读材料:
推荐阅读
- reactjs - 在模态反应引导程序中将一张卡链接到另一张卡
- python - 如何从 Maya 的 2 个位置获取方向?
- node.js - 如何从 node.js pm2 运行 ConPTY 终端?
- android - 如何使用 android 中的微调器下拉列表在视图寻呼机中显示片段?
- ruby-on-rails - 如何解决无法从控制器的类方法调用控制器方法的问题?
- python - 根据由某些事件分隔的记录创建事件编号列
- c# - 如何将泛型类型用于需要泛型类型的基类和接口?
- python - 如何根据python中的排序功能对业务ID进行排序
- sql - 在使用列的现有值与从 JSON_VALUE 返回的值进行比较的 WHERE 子句中使用 CASE?
- python - Kivy:如何在更新 recycleview 表数据时添加加载栏?