workers

简介: web worker 是运行在后台的 JavaScript,不会影响页面的性能。JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力

1.前言 what


web worker 是运行在后台的 JavaScript,不会影响页面的性能。

JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力


2.页面监听worker


页面类似主人一样 会受到worker/机器人的信息


var w = new Worker("./index.js")
        w.onmessage = function(e){
            box.innerHTML = e.data
        }



3. worker


机器人帮我们/主人 干活的


var total = 0;
for (var i = 1; i < 10000; i++){
    total+=1
}
//告知主人 活干完了
postMessage(total)



4. 主人发任务


主人可以主动个机器人发布任务指令


var worker= new Worker("./workers.js");
  // 主线程传给worker数据,各种数据类型,包括二进制
   worker.postMessage({ type: "start", msg: "start work" })



5.机器人接收主人的任务



//// self代表线程自身,即子线程的全局对象 self this 也可以省略
console.log("worker 文件", self)
self.addEventListener('message', function(e) {
    var data = e.data;
   if(data.type==="start"){
        self.postMessage("收到主人,我已经开始工作");
    }
  }, false);



6.worker 关闭


worker内部关闭自身

self.close(); // Terminates the worker.

页面关闭

w.terminate();

导入其他模块

importScripts('script1.js', 'script2.js');

钩子

message 监听发回来的消息

error       监听worker错误处理


7.worker的不同


由于 web worker 位于外部文件中,它们无法访问下例 JavaScript 对象:

window 对象

document 对象

parent 对象

Worker 线程可以

navigator对象

location对象。




相关文章
|
11月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
256 11
|
存储
在Arduino中使用数学库
在Arduino中使用数学库,可以通过包含`&lt;math.h&gt;`头文件来访问一系列数学函数,如sin、cos、tan等。使用这些函数前需确保已正确引入库,并了解各函数参数与返回值类型,以便进行精准的数学运算。
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现深度学习模型:智能饮食建议与营养分析
使用Python实现深度学习模型:智能饮食建议与营养分析
862 3
|
存储 Java 定位技术
获取ip所在城市
本文介绍了如何在SpringBoot应用中通过IP地址快速获取用户的国家、省份和城市信息。首先,通过引入GeoLite2 City数据库并整合相关依赖,接着下载并配置GeoLite2 City数据库文件。然后,创建地址获取工具类和Controller接口,最后进行测试以确保功能正常。此方法简单高效,适用于多种应用场景。
|
机器学习/深度学习 算法 5G
|
API 数据安全/隐私保护 开发者
商品详情 API 接口的调用次数是否有限制?
商品详情API接口调用次数受限,旨在保障系统稳定性和防止恶意攻击。平台依据账户类型设定不同限制:普通开发者账户调用次数较少,而企业级账户享有更高限额但需申请并可能收费。此外,平台还设置了短期和长期调用频率限制,以避免高并发请求导致服务器过载。
450 2
|
存储 SQL Prometheus
【TiDB原理与实战详解】1、原理与基础优化~学不会? 不存在的!
TiDB 是一款开源的分布式关系型数据库,具备水平扩展、高可用性和强一致性等特点,适用于高并发、低延迟的大规模数据处理场景。其架构设计灵感源自 Google 的 Spanner 和 F1,并兼容 MySQL。TiDB 集群由 TiDB Server(无状态 SQL 层)、PD(元数据管理模块)和 TiKV Server(分布式存储层)组成,还包含 TiFlash(列存储引擎)以加速分析型查询。TiDB 支持分布式事务和多种事务模式,适用于 OLTP 和 HTAP 场景,如电商平台和金融系统。此外,TiDB 的部署要求包括高性能硬件配置和特定网络设置,以确保系统的稳定性和高效运行。
|
监控 安全 数据安全/隐私保护
确保数据安全与隐私保护的数据治理最佳实践
【8月更文第13天】随着数据成为企业最重要的资产之一,数据安全和隐私保护变得至关重要。本文将探讨数据治理中的一些最佳实践,并提供具体的代码示例来说明如何实施这些策略。
2489 4
|
Unix Linux Python
`subprocess`模块允许你启动新的应用程序,连接到它们的输入/输出/错误管道,并获取它们的返回码。
`subprocess`模块允许你启动新的应用程序,连接到它们的输入/输出/错误管道,并获取它们的返回码。
|
自然语言处理
论文推荐:用多词元预测法提高模型效率与速度
《Better & Faster Large Language Models via Multi-token Prediction》论文提出了一种多词元预测框架,改善了大型语言模型(LLMs)的样本效率和推理速度。该方法通过一次预测多个词元,而非单个词元,提高了模型在编程和自然语言任务中的性能。实验显示,多词元预测在HumanEval和MBPP任务上性能提升,推理速度最高可提升3倍。此外,自我推测解码技术进一步优化了解码效率。尽管在小模型中效果不明显,但该方法为大模型训练和未来研究开辟了新途径。
541 0