webWorker学习

webWorker学习

简单理解worker的作用就是一个处理复杂大量数据的js函数,
如下图,在index.html代码中,1、先对Worker进行实例化创建work,创建work.onmessage对事件监听,通过work.postMessage方法传递参数param,work.js创建message事件监听,通过message监听事件获得参数param,在work.js进行数据处理,完成后,通过postMessage方法传递结果数据,index.js的通过onmessage事件监听获得返回的数据。

注:worker要通过服务器才能进行使用

在这里插入图片描述

代码

index.html
<!DOCTYPE html>
<html>
<body>
    <input type="text" id="input">
    <button onclick="count()">计算</button>
    <button onclick="result()">结果</button>
</body>
<script type="text/javascript">
    //创建线程 work对象
    var work = new Worker("work.js");
    // 监听消息
    work.onmessage = function (event) {
        console.log('输出的结果是:' + event.data);
    };
    // 计算
    function count() {
        let num = document.getElementById('input').value
        //发送消息
        work.postMessage(document.getElementById('input').value || 0);
    }
    // 关闭worker
    function result() {
        work.terminate()
        work = null
    }
</script>
</html>
work.js
addEventListener('message', function (event) {
    var num = event.data;
    var result = 0;
    for (var i = 1; i <= num; i++) {
        result += i;
    }
    postMessage(result);
}, false);
// 下面这写法也可以
onmessage = function (event) {
    var num = event.data;
    var result = 0;
    for (var i = 1; i <= num; i++) {
        result += i;
    }
    postMessage(result);
}

参考文档:
http://www.ruanyifeng.com/blog/2018/07/web-worker.html
https://github.com/GoogleChromeLabs/ui-element-samples/blob/gh-pages/web-workers/worker.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值