记录前端开启多线程,以及一般应用场景

前端开启多线程,以及一般应用场景

javascript是单线程执行的,在处理运算过程中,浏览器不能执行其它javascript脚本,UI渲染线程也会被挂起,从而导致浏览器进入僵死状态。因此在做一些耗时比较大的运算时,需要我们开启一个新的线程执行运算脚本。

解决方案

Web Worker 是 HTML5 提供的一个javascript多线程解决方案,可以将一些大计算量的代码交由web Worker运行而不冻结用户界面

Web Worker特点

web worker有两个好处:快速、不阻塞浏览器响应
web worker不能操作DOM

应用场景

以计算斐波那契数列这类运算量大的计算为例,开启多线程,计算出结果。然后再进行主线程逻辑操作。

// worker.js
self.onmessage = function(event) {
	const data = event.data;
	
	const result = fib(data);

	self.postMessage(result);
}

function fib(n) {
	if(n == 1 || n == 2){
		return 1;
	}
	return fib(n - 1) + fib(n - 2);
}
// 主线程
const worker = new Worker('./worker.js');

worker.postMessage(50);
let startTime = new Date().getTime();
console.log(`start: ${startTime}`);

worker.onmessage = function(event) {
	const result = event.data;
	// 处理数据
	let endTime = new Date().getTime();
	console.log('result:' + result, endTime);
	console.log('time' + (endTime-startTime)/1000 + 's');
}

执行结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多线程的实际应用场景很多。一般来说,当我们需要对一些耗时操作做优化时,可以考虑使用多线程。以下是一些常见的多线程应用场景: 1. 并行获取数据:当我们需要多次从其他RPC服务取数据时,可以利用多线程并行获取数据,等待所有数据返回后再进行统一处理。 2. 数据库查询优化:当需要从多个表中获取数据时,可以利用多线程并行从不同表中获取数据,然后再进行处理,以提高查询效率。 3. 大数据导入:当需要导入一个较大的表格数据时,可以利用多线程分批导入数据,以提高导入速度。 4. 图片或视频处理:当需要对大量的图片或视频进行处理时,可以利用多线程并行处理,以提高处理速度。 5. 网络请求:当需要发送多个网络请求获取数据时,可以利用多线程并行发送请求,以提高响应速度。 以上只是一些常见的多线程应用场景,实际上多线程可以在各种需要并发执行任务的场景中使用,以提高程序的并发性和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [多线程的原理、实践、应用](https://blog.csdn.net/qq_43279637/article/details/120992524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值