原生JS多线程解决方案:Worker

本文介绍WebWorker的基本概念及其在H5中的应用方式。WebWorker能够创建额外线程优化页面性能,适用于复杂计算、大文件上传等场景,有效提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

一般情况下我们使用JS都是单线程的模式,也就是前边的代码执行完,才能轮到后边的代码执行。后来因为电脑计算能力的增强,单线程模式对于多核CPU的计算机计算能力便出现了一些浪费。

web Worker是H5新增的功能,可以手动创建一个或多个额外线程来优化我们的页面。一般我们的主线程来处理UI展示、交互等方面的任务,子线程可以用来完成一些耗时的操作,可以明显的提升用户体验。

nodeJS请直接使用worker_threads模块

二、用法

1.主线程
  • 创建额外线程(接收的参数只能是一个js文件的链接)

      const worker = new Worker('./work.js');
    
  • 主进程向子进程通过postMessage发消息

      worker.postMessage('Hello World')
    
  • 主进程接收子进程的消息

worker.onmessage = function (event) {
  console.log('Received message ' + event.data);
  doSomething();
}
  • 主进程中结束子进程

      worker.terminate()
    
2.子进程
  • 子进程接主进程的消息
onmessage = e =>{
  // do something
}
  • 主进程给子进程发消息

      postMessage('to main process')
    
  • 子进程中结束自身进程

      close()
    

三、使用场景

  • 复杂的计算任务
  • 大文件上传
  • 主流程加载速度优化
  • 发挥你的脑洞…

四、在线案例

  • MDN推荐的在线案例,github地址
  • 我仿照写的在线案例
    • 只实现了核心功能,监听累加计算
    • 不包含任何样式
    • 代码不到40行,感兴趣的小伙伴可以看一下

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值