浅学H5 Web Workers(多线程)(周记)

16 篇文章 0 订阅
7 篇文章 0 订阅
本周重点学习了JavaScript的高级特性,尤其是闭包和多线程。发现初次学习后理解仍不够深入,需要通过更多途径深化学习。在JS的多线程应用中,了解到其能解决单线程可能导致的浏览器假死问题。通过主线程和工作线程(worker)的交互,实现计算任务的分离,提高了程序的运行效率。实例展示了如何创建和通信工作线程,以及工作线程计算斐波那契数列并返回结果给主线程的过程。
摘要由CSDN通过智能技术生成

周总结:

        这周主要进行的是对JS高级的学习,刚开始看视频学一遍后感觉问题不是很大,不过这两天结合其他的进行再学习,我发现我的问题还是不小的。尤其是对闭包,多线程的学习还是过于浅薄,缺少总结;明天又要考核了,感觉不太妙呀。以后对新的知识的学习还是要结合多点渠道多进行学习,要不然很难掌握好知识点!

        下面浅记录关于JS对多线程的基本用法:

前言

        JS是单线程的去跑代码,比如如果做一个循环从0到一个很大的数字相加然后输出,浏览器可能会假死(无响应状态),这个时候利用多线程的优点去创建主线程和子线程成为了解决这个问题的好方法;

下面记录一下JS多线程的基本应用:

实例:

1.main.js (主线程):

    var number=42
    var worker=new Worker('t1.js');
    //创建Worker对象
    worker.onmessage=function(event){
        console.log("主线程接收分线程返回的数据"+event.data);
        alert(event.data)
    }   
    //或进行代码的简写:
    //		worker.onmessage=({data})=>{
    //   	console.log("主线程接收分线程返回的数据"+data);
    //    alert(data)
    //}
    //绑定接收信息的监听,当接收到信息后调用
    worker.postMessage(number);
    console.log("主线程向分线程发送数据"+number);
    //向分线程发送信息

2.t1.js(分线程):
 

function fff(n){
    return n<=2?1:fff(n-1)+fff(n-2);
}
var onmessage=function(event){
    var number=event.data;
    console.log("分线程接收到的主线程数据:"+number)
    var result=fff(number)
    postMessage(result)
    console.log("分线程向主线程发送数据:"+result)
}
//或进行代码的简写:
//self.onmessage=({data})=>{
//    var number=data;
//    console.log("分线程接收到的主线程数据:"+number)
//    var result=fff(number)
//    postMessage(result)
//    console.log("分线程向主线程发送数据:"+result)
//}
//alert("d");//报错
//因为alert是window的方法,分线程的全局对象不是window

 3.控制台输出结果:

主线程向分线程发送数据:42
分线程接收到的主线程数据:42
分线程向主线程发送数据:267914296
主线程接收分线程返回的数据:267914296 

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽不会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值