iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >HTML5 Web Workers中如何进行网站多线程的实现
  • 947
分享到

HTML5 Web Workers中如何进行网站多线程的实现

2024-04-02 19:04:59 947人浏览 独家记忆
摘要

今天就跟大家聊聊有关HTML5 WEB Workers中如何进行网站多线程的实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Web Workers

今天就跟大家聊聊有关HTML5 WEB Workers中如何进行网站多线程的实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Web Workers 是在html5中新增的,用来在web应用程序中实现后台处理的一种技术

在HTML4中,js创建的程序都是单线程的,如果花费时间比较长的话web界面就会长时间没有响应,最恶劣的情况还会跳出一个脚本提示框:

提示脚本运行时间过长,是否继续。。。。于是就引出了本文的主角:Web Workers api

使用这个API用户可以非常容易的创建在后台运行的线程,要创建后台程序很简单:

代码如下:


var worker = new Worker('*.js');
注意:后台线程是不能访问页面或者窗口对象的
可以通过发送消息和接受消息与后台线程传递数据:
worker.onmessage = function (e) {};
worker.postMessage = function (e) {};


说一下求和:

代码如下:


<!DOCTYPE html>
<html xmlns="Http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        function calculate() {
            var num = 10000000000;
            var r = 0;
            for (var i = 1; i < num; i++) {
                r += i;
            }
            alert(r);
        }
        calculate();
    </script>
</head>
<body>
</body>
</html>



HTML5 Web Workers中如何进行网站多线程的实现

于是我美丽的框给出来了。。。但使用web worker便不会:

代码如下:


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        var worker = new Worker('c.js');
        worker.onmessage = function (e) {
            alert('和:' + e.data);
        };
        function calculate() {
            var num = 1000000;
            worker.postMessage(num);
        }
        calculate();
    </script>
</head>
<body>
</body>
</html>

代码如下:


onmessage = function (e) {
   var num = e.data;
   var r = 0;
   for (var i = 1; i < num; i++) {
       r += i;
   }
   postMessage(r);
}

HTML5 Web Workers中如何进行网站多线程的实现

我有时候就在想,我没事干嘛计算那么大的数字啊。。。。。当然这是无聊的坑爹,但我想有个场景可能需要用到这个。

在前面学习file api时,有个读取本地文件的操作,若是文件过大会很慢,不知道这个可以应用上去吗?二次学习时有必要试试。

与线程进行数据交互

我们这里完成一个功能,在前台随机生成数组,然后在后台计算能被3整出就返回前台打印:

代码如下:


主程序
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style>
        span
        {
            padding: 10px;
        }
    </style>
    <script src="../Jquery-1.7.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var worker = new Worker('t1.js');
            worker.postMessage('');
            worker.onmessage = function (e) {
                var arr = e.data.split(';');
                for (var i = 0, len = arr.length; i < len; i++) {
                    var dom = $('<span>' + arr[i] + '</span>');
                    $('#body').append(dom);
                }
            }
        });

    </script>
</head>
<body>
    <div id='body' style=' width: 400px; Word-break:break-all; word-wrap:break-word; '>
    </div>
</body>
</html>

代码如下:


生成数组的程序
onmessage = function (e) {
    var arr = [];
    for (var i = 0; i < 100; i++) {
        arr.push(parseInt(Math.random() * 100));
    }

    var worker = new Worker('t2.js');
    worker.postMessage(JSON.stringify(arr));
    worker.onmessage = function (e) {
        //把挑选结果发回前台
        postMessage(e.data);
    };
}

代码如下:


判断数组所有数据是否被3整除
onmessage = function (e) {
    var arr = JSON.parse(e.data);
    var str = '';
    for (var i = 0, len = arr.length; i < len; i++) {
        if (parseInt(arr[i]) % 3 == 0) {
            if (str != '') str += ';';
            str += arr[i];
        }
    }
    postMessage(str);
    close();

};

HTML5 Web Workers中如何进行网站多线程的实现

程序逻辑描述:

这里用了个线程嵌套

首先执行前台程序,这里初始化了一个子线程“t1”用于将100个数组初始化

然后子线程t1又初始化了子线程t2(用于遍历数组,取出能被3整除的数字,组成字符串),t1将数组数据传给t2

t2 接收t1数据,计算后将将字符串转给t1,t1转给前台,前台执行自己的逻辑

流程结束


简单来说,我这里就是声明子线程,然后发送数据给子线postMessage,然后等待结果皆可。

这里看来,结合上次的通信API Web Sockets ,可以将2个结合做一个网页聊天程序,甚至还可以将本地存储/本地数据库一些东西用到。

这个样子可能是个不错的东西。

看完上述内容,你们对HTML5 Web Workers中如何进行网站多线程的实现有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网node.js频道,感谢大家的支持。

--结束END--

本文标题: HTML5 Web Workers中如何进行网站多线程的实现

本文链接: https://www.lsjlt.com/news/82833.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HTML5 Web Workers中如何进行网站多线程的实现
    今天就跟大家聊聊有关HTML5 Web Workers中如何进行网站多线程的实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Web Workers...
    99+
    2024-04-02
  • HTML5 Web Workers怎么实现网站多线程
    这篇文章主要介绍了HTML5 Web Workers怎么实现网站多线程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTML5 Web Workers怎么实现网站多线程文章都会...
    99+
    2024-04-02
  • HTML5中如何进行多线程编程应用
    HTML5中如何进行多线程编程应用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HTML5 中工作线程(Web  Worker)简介至 2008 年 W3C 制定出第...
    99+
    2023-06-17
  • 如何进行Python线程的多线程展示
    如何进行Python线程的多线程展示,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么多线程?多线程,就是多个独立的运行单位,同时执行同样的事情。想想一下,文章发布后同时被...
    99+
    2023-06-22
  • Java中的多线程如何实现线程通信
    这篇文章将为大家详细讲解有关Java中的多线程如何实现线程通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java多线程中线程间的通信一、使用while方式来实现线程之间的通信packag...
    99+
    2023-05-31
    java 多线程 线程通信
  • C#中如何实现多线程
    在C#中实现多线程可以使用Thread类或Task类。以下是两种常用的实现方式: 使用Thread类: using System...
    99+
    2024-04-03
    C#
  • java如何实现多线程的顺序执行
    场景 编写一个程序,启动三个线程,三个线程的name分别是A,B,C;,每个线程将自己的ID值在屏幕上打印5遍,打印顺序是ABCABC... 使用 synchronized 实现 ...
    99+
    2024-04-02
  • 如何进行HTML中的网站优化
    如何进行HTML中的网站优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。网站head区代码规范head区是指<head>和</head>之间的内容。 ...
    99+
    2023-06-12
  • JavaScript如何实现多线程运行库Nexus.js
    这篇文章主要为大家展示了“JavaScript如何实现多线程运行库Nexus.js”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript如何实现多线...
    99+
    2024-04-02
  • Linux中如何实现BASH多进程并行处理
    这篇文章主要为大家展示了“Linux中如何实现BASH多进程并行处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何实现BASH多进程并行处理”这篇文章吧。代码如下:#!/bin/...
    99+
    2023-06-09
  • pytest实现多进程与多线程运行超好用的插件
    目录前言一、pytest-parallel二、pytest-xdist三、对比说明四、特别注意前言 如果想分布式执行用例,用例设计必须遵循以下原则: 1、用例之间都是独立的,2、用例...
    99+
    2024-04-02
  • 如何使用HTML5实现网站在windows8中贴靠
    这篇文章主要为大家展示了“如何使用HTML5实现网站在windows8中贴靠”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5实现网站在windo...
    99+
    2024-04-02
  • 如何使用Python中的多线程进行任务并发执行
    如何使用Python中的多线程进行任务并发执行多线程是一种常用的并发编程技术,可以提高程序的执行效率。在Python中,使用多线程可以实现任务的并发执行,从而加快程序的运行速度。本文将介绍如何使用Python中的多线程进行任务的并发执行,并...
    99+
    2023-10-22
    并发执行 Python多线程
  • java多线程中如何实现线程并发库
    本篇文章给大家分享的是有关java多线程中如何实现线程并发库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。多线程之线程并发库原子性操作类java.util.concurrent...
    99+
    2023-06-19
  • 如何在PHP中实现在线教育网站
    随着互联网的普及,越来越多的人选择通过网络学习知识,在线教育网站的需求也越来越大。如今,在线教育网站已成为人们掌握新知识,提高自我能力的重要途径。本文将介绍如何利用PHP语言搭建一个性能良好、功能强大的在线教育网站。第一步:搭建网站基础搭建...
    99+
    2023-05-22
    在线教育 PHP编程 网站实现
  • 如何在PHP中实现多语言网站
    随着互联网的日益普及,越来越多的网站需要支持多语言。这是因为网站的受众群体可能来自不同的地区和文化背景,如果只提供单一语言的网站,可能会限制访问者的数量和体验。本文将介绍如何在PHP中实现多语言网站。一、语言文件的创建和设计语言文件是存储所...
    99+
    2023-05-22
    PHP编程 多语言 网站国际化
  • 什么是多线程?进程和线程的区别是什么?如何使用Java实现多线程?
    文章目录 前言我们为什么要使用线程而不是进程来实现并发编程什么是线程进程和线程的区别如何使用Java实现多线程创建线程1.创建一个继承 Thread 类的线程类2.实现 Runnable 接口匿名内部类方式实现 Runnable ...
    99+
    2023-08-19
    java JavaEE 多线程 进程
  • 如何在Python中实现多线程和多进程的实时接口和文件处理?
    在Python中,多线程和多进程是实现并行处理的两种方式。多线程和多进程的区别在于,多线程是在同一个进程中创建多个线程来并行执行任务,而多进程是在不同的进程中创建多个进程来并行执行任务。在本文中,我们将学习如何在Python中实现多线程和多...
    99+
    2023-08-20
    文件 实时 接口
  • 如何在Shell中实现“多线程”执行脚本文件
    本篇内容介绍了“如何在Shell中实现“多线程”执行脚本文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!即比如我有100个可执行文件,互相...
    99+
    2023-06-09
  • 如何进行SAP UI5 Web Component的图标实现
    本篇文章为大家展示了如何进行SAP UI5 Web Component的图标实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。例子:我的SAP UI5 Web Component开发而成的React...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作