专用工作者线程worker加载模块方法,import引入和importscirpt引入

在 Web Workers 中加载其他脚本,通常有两种方式:使用 importScripts() 方法和使用 ES6 模块的 import 语法。这两种方式各有特点和适用场景。

importScripts() 方法
importScripts() 是 Web Workers 的一个内置方法,用于在 Worker 内部动态加载外部 JavaScript 文件。它是一个同步操作,意味着在脚本加载完成之前,Worker 线程会被阻塞。

特点:

同步加载:importScripts() 会阻塞 Worker 线程直到脚本加载完成。
兼容性:兼容性较好,支持较旧的浏览器版本。
全局作用域:通过 importScripts() 加载的脚本中的变量和函数会成为 Worker 的全局作用域的一部分。

const myWorker = new Worker('worker.js');// 在 worker.js 中
importScripts('script1.js', 'script2.js');

ES6 import()方法
ES6 模块的 import 语法是一种现代的模块化方案,它允许开发者以异步的方式加载模块。在 Worker 中使用 import 语法需要在 Worker 的脚本中使用 type=“module” 属性。

特点:

异步加载:import 是异步的,不会阻塞 Worker 线程。
现代语法:使用 ES6 模块语法,支持模块化开发。
模块作用域:通过 import 导入的模块具有自己的作用域,不会污染全局作用域。

//greet.sj

export function Hello()
{return '你好';
}
export function add(x,y)
{return x+y;
}
//导入普通脚本中的函数
import {Hello,add} from './greet.js';
//在这个子线者运行函数;并返回值,然后再传给主线程
self.postMessage(Hello());
self.onmessage=function(e)
{let numdata=e.data;self.postMessage(add(numdata.x,numdata.y));
}

//greetWorker.html

<html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8"/><title>测试用模块来加载worker</title></head><body><script>//创建工作者专用线程,type:module表示模块;classic表示普通脚本let w=new Worker('./greetWorker.js',{type:'module'});//为线程传递参数值w.postMessage({x:5,y:6});//接收子线程返回的数据w.onmessage=function(e){console.log(e.data);}</script></body>
</html>

最后总结

区别
加载方式:importScripts() 是同步的,而 import 是异步的。
兼容性:importScripts() 兼容性更好,import 需要浏览器支持 ES6 模块。
作用域:importScripts() 加载的脚本共享全局作用域,而 import 导入的模块有自己的作用域。
语法:importScripts() 适用于传统脚本,import 适用于现代的模块化开发。

选择
如果你需要在 Worker 中加载多个脚本,并且不需要模块化开发,可以使用 importScripts()。
如果你的项目已经采用了 ES6 模块,并且需要利用模块化的优势,那么使用 import 语法是更好的选择。
总的来说,选择哪种方式取决于你的项目需求和浏览器兼容性要求。随着现代浏览器对 ES6 模块的支持越来越好,使用 import 语法在 Worker 中加载模块可能会成为主流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/10118.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

post sim下如何将timing信息反标到仿真工具

文章目录 0 前言1 调用格式2 option介绍2.1 sdf_file (**必须**)2.2 module_instance (**可选**)2.3 config_file (**可选**)2.4 log_file (**可选**)2.5 mtm_spec (**可选**)2.6 scale_factors (**可选**)2.7 scale_type (**可选**) 0 前言 跑post sim时需要带入timing信息&a…

C++builder中的人工智能(16):神经网络中的SoftPlus激活函数

现在我们继续探索一下SoftPlus激活函数在人工神经网络&#xff08;ANN&#xff09;中的应用。了解SoftPlus激活函数的工作原理&#xff0c;将有助于您在使用C IDE构建C应用程序时更加得心应手。 目录 神经网络中的激活函数是什么&#xff1f;能在C中创建激活函数吗&#xff1f…

【图】图学习

0 回顾数据结构逻辑 1 图的定义和基本术语 必须有顶点&#xff0c;可以没有边。 Cn2和2*Cn2&#xff08;数学上的&#xff0c;n个顶点取2个顶点&#xff09; 概念有些多。。。。。。

类和对象(C++)(中)

1. 类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不重…

港科夜闻 | 香港科大校董会汇聚顶尖医学专家及学者,为筹建第三间医学院提供专业意见...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大校董会汇聚顶尖医学专家及学者&#xff0c;为筹建第三间医学院提供专业意见。为支持政府及其新成立的工作组发展香港成为国际医疗培训、研究和创新枢纽&#xff0c;以及培养更多医生的愿景&#xff0c;香港科大于…

23.智能停车计费系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2 相关概念和技术介绍 2.1 JAVA技术介绍 2.2 SpringBoot框架 2.3B/S架构 2.4 MySQL数据库 3 系统需求分析 3.1 问题定义 3.2 可行性分析 3.3系统用例分析 3.4 系统流程分析 3.4.1 登录流程 3.4.2 添加信息流程 3.4.3 删除信息流程 4…

golang安装,常用框架安装,记忆点

0.安装 虚拟机扩容 【Linux干货分享】LVM快速扩容虚拟机磁盘_哔哩哔哩_bilibili newvim 安装 sudo add-apt-repository ppa:neovim-ppa/stable sudo apt-get update sudo apt-get install -y neovim 最强Vim新手指南&#xff0c;手把手教你打造只属于自己的代码编辑器&am…

【Unity】Unity拖拽在Android设备有延迟和卡顿问题的解决

一、介绍 在制作Block类游戏时&#xff0c;其核心的逻辑就是拖拽方块放入到地图中&#xff0c;这里最先想到的就是Unity的拖拽接口IDragHandler,然后通过 IPointerDownHandler, IPointerUpHandler 这两个接口判断按下和松手&#xff0c;具体的实现逻辑就是下面 public void On…

云计算在esxi 主机上创建 4g磁盘,同时在此磁盘上部署linux

1 创建4g 磁盘 这个状态说明esxi 已经启动好 开启esxi 这个操作系统已经安装 这个在我们pc 上ping esxi 主机可以正常通信 这个是esxi 主机的界面 开始添加硬盘4g 重新登 在我们的esxi 主机上新增了8g的空间 很明显这是给我们 的磁盘空间装文件系统 这个很明显是格式化把文件…

关于圆周率-4

在这里总结一下&#xff0c;以上分析&#xff0c;都是基于“单位”的。计算圆周率的时候&#xff0c;我们考虑的是做一个单位来理解&#xff0c;而它的倍数则作为某种比例缩放来理解。同理欧拉函数&#xff0c;也是用弧长来作为单位的&#xff0c;其它弧长则是基于这个单位的比…

嘉吉携百余款产品与解决方案再度亮相进博会

第七届中国国际进口博览会&#xff08;下称“进博会”&#xff09;于11月5日至10日在上海国家会展中心举办。嘉吉连续第七年参与进博会&#xff0c;并以“新质绿动&#xff0c;共赢未来”为参展主题&#xff0c;携超过120款创新产品与解决方案&#xff0c;共赴进博之约。 今年嘉…

docker网络配置:bridge模式、host模式、container模式、none模式

docker网络模式选择 docker网络配置&#xff1a;bridge模式、host模式、container模式、none模式 - 熊仔其人 - 博客园 docker网络配置&#xff1a;bridge模式、host模式、container模式、none模式 在docker平台里有四种网络模式&#xff0c;今天继续分享一下它们的常用知识&a…

教材下载 3.2.5| 国家中小学智慧教育平台下载器,支持预览

教材下载是一款国家中小学智慧教育平台的下载器&#xff0c;绿色免安装&#xff0c;用户只需解压后双击exe文件即可使用。软件涵盖了小学、初中、高中以及特殊教育的教材内容&#xff0c;并支持选择不同的学科和版本。所有教材均支持在线预览&#xff0c;用户还可以下载PDF文件…

系统架构(01架构的特点,本质...)

目录 学习前言 一、软件架构简介 二、系统复杂性的来源与应对 三、大型网站的特点 四、大型网站架构目标 五、参考文献 学习前言 本节总结下架构相关的基础知识&#xff1a;概述&#xff0c;特点&#xff0c;目标&#xff0c;本质... 一、软件架构简介 所谓架构&#x…

飞凌嵌入式FET527N-C核心板现已适配Android 13

飞凌嵌入式FET527N-C核心板现已成功适配Android13&#xff0c;新系统的支持能够为用户提供更优质的使用体验。那么&#xff0c;运行Android13系统的FET527N-C核心板具有哪些突出的优势呢&#xff1f; 1、性能与兼容性提升 飞凌嵌入式FET527N-C核心板搭载了全志T527系列高性能处…

如何借助AI 来提高开发效率

前言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;特别是大规模语言模型&#xff08;如 GPT 系列&#xff09;的崛起&#xff0c;软件开发领域正在经历一场革命。AI 大模型不仅在代码生成方面展现出强大的能力&#xff0c;还在测试、维护和创新等多个环…

C++ 高效率整型大数运算项目优化——内置类型存储与计算

C 高效率整型大数运算项目优化——内置类型存储与计算 一、前言二、优化设计分析类的设计 三、设计实现加法减法乘法对于 lint&#xff1a;对于 iint&#xff1a; 左移与右移左移右移 除法基本除法借用内置类型计算第一种情况第二种情况其他情况区间定位二分计数内置类型求近似…

Qt教程(007):资源文件添加

文章目录 7.1 创建新的项目7.2 添加资源文件7.2 设置页面7.1 创建新的项目 选择创建项目类型 输入项目名称 勾选UI界面 7.2 添加资源文件 选中项目名称,右键,选择【Add New】 添加资源文件 选择Qt Resource File文件

利用轻易云高效集成旺店通与金蝶云星空销售出库单

重跑数据—分销旺店通销售出库单>金蝶销售出库单&#xff08;正常销售&刷单&#xff09;(ok) 在企业信息化管理中&#xff0c;数据的准确性和及时性至关重要。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将旺店通企业奇门的数据高效…

CAN总线协议

电气特性 高速CAN&#xff1a;电压差为0V时表示逻辑1&#xff08;隐性电平&#xff09;&#xff0c;电压差为2V时表示逻辑0&#xff08;显性电平&#xff09;&#xff0c;速率&#xff1a;125Kbps&#xff5e;1Mbps。低速CAN&#xff1a;电压差为-1.5V时表示逻辑1&#xff08;…