zoukankan      html  css  js  c++  java
  • JavaScript 中的多线程通信的方法

    在Html 5诞生之后,我们可以使用javascript来实现多线程处理。H5 新增了一个web workers api,使用这个API,用户可以很容易地创建在后台运行的线程,H5 中被称为workder ,如果将费时比家长的操作放到后台去执行,对用户在界面的操作就完全没有影响了。

    创建后台线程也十分的简单,只要在workder类的构造器中将需要执行的脚本文件的url作为参数,然后创建worker对象就可以了,如下所示

    var worker = new Worker("test.js")

    在创建了worker对象之后,我们可以通过worker的postMessage()来向后台线程发送消息。可以使用onmessage(msg) 来获取消息。

    下面我们来看一下多线程之间通信,在这里实现多个worker之间通信实际上需要借助主线程,子线程A将消息发送给主线程,然后主线程将A线程发送的消息发送给B.下面是实现的代码。

    a href="http://www.codesec.net/kf/qianduan/css/" target="_blank" class="keylink">html> <script> var sendWorker = new Worker("js/send.js"); //消息发送线程 var receiveWorker = new Worker("js/receive.js"); //消息接送线程 sendWorker.onmessage = function(msg) { receiveWorker.postMessage(msg.data); //接收到消息之后马上发给接受线程 } function sendMessage() { sendWorker.postMessage(""); //启动消息发送线程发送消息。 } </script>

    send.js

    onmessage = function(msg) { postMessage("这个是子线程A 发送的消息");// 线程A 发出消息 }

    receive.js

    onmessage = function(msg) { //alert(msg.data); //这句话会报错,因为当前这个方法是在子线程中执行,所以不能使用alert,因为这个会影响UI console.log(msg.data); // 接受线程在控制台输出 }

    最后说一下workder之中可用的变量,函数,类

    self :该关键字用来本线程的范围。

    postMessage(msg) 向创建线程的源窗口发送消息。

    onmessage 获取接受消息的事件 句柄。

    importScripts(urls) 导入其他的javascript脚本。

    使用navigator对象。

    使用sessionStorage/localStorage

    使用ajax请求

    嵌套线程

    close结束本线程。

    setTimeout/setInterval

    eval().isNaN()等,可以使用所有javascript核心函数。

    object

    可以使用WebSockets api.

  • 相关阅读:
    QT学习笔记
    局域网摄像头安装与调试
    从0开始搭建视觉检测智能车
    树莓派安装anaconda
    手把手教你搭建视觉检测智能车
    树莓派与Arduino串口通信实验
    树莓派设置关机重启键
    树莓派can通信
    树莓派GPIO使用笔记
    MySQL练习题
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/7212656.html
Copyright © 2011-2022 走看看