参考大神:Javascript多线程

web worker ---- 6.Web Worker 概述

截图过来:

线程之间的通信

let worker = new Worker(‘js文件路径’)

主线程
worker.PostMessage(你想传输的数据);
worker.onmessage = function(event){
  //event.data是子线程返回的数据
}

子线程
onmessage 接收主线程数据
PostMessage 向主线程发送数据

例子

<!DOCTYPE html>
<html lang="zh">
<head>
  <title>多线程</title>
  <meta charset="utf-8"/>
</head>
<body>
  <div>
    <span id="hour"></span>:<span id="minute"></span>:<span id="second"></span>
  </div>

  <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  <script>
    let worker = new Worker('./index.js');
    // 传输的数据
    worker.postMessage(new Date().getTime()+1000000);
    // 子线程返回的数据
    worker.onmessage = function (event) {
      $("#hour").text(event.data.hour);
      $("#minute").text(event.data.minute);
      $("#second").text(event.data.second);
    }
  </script>
</body>
</html>

index.js

// 接收主线程数据
onmessage = function (event) {
  let end_time = event.data;
  if(end_time>new Date().getTime()){
    end_time=end_time/1000;
    setInterval(function(){
      let now_time =  Math.round(new Date().getTime()/1000);  //现在的时间
      let time =end_time - now_time;
      let hour = parseInt(time / 60 / 60 );
      let minute = parseInt(time / 60 % 60);
      let seconds = parseInt(time % 60);
      if(now_time<= end_time){
        if(hour < 10){
          hour = "0" + hour;
        }
        if(minute < 10){
          minute = "0" + minute;
        }
        if(seconds < 10){
          seconds = "0" + seconds;
        }
        //向主线程发送数据
        postMessage({hour:hour,minute:minute,second:seconds}); //返回这一秒的数据
      }
    },1000);
  }
};

注意在服务器端打开

JS高级学习笔记(2)之js多线程的更多相关文章

  1. node.js day01学习笔记:认识node.js

    Node.js(JavaScript,everywhere) 1.Node.js 介绍 1.1. 为什么要学习Node.js 企业需求 + 具有服务端开发经验更好 + front-end + back ...

  2. 转:JS高级学习笔记(8)- JavaScript执行上下文和执行栈

    必看参考: 请移步:博客园 JavaScript的执行上下文 深入理解JavaScript执行上下文和执行栈 JavaScript 深入之执行上下文 写在开头 入坑前端已经 13 个月了,不能再称自己 ...

  3. JS高级学习笔记(6)- 事件循环

    参考文章:深入理解JS引擎的执行机制        JavaScript 异步.栈.事件循环.任务队列 我的笔记:ES系列之Promise async 和 await Event Loop 前提 js ...

  4. JS高级学习笔记(1)- 数据类型及转换规则

    必读: Javascript对象Oject的强制类型转换 JavaScript筑基篇(二)->JavaScript数据类型 聊一聊valueOf和toString 深入理解JavaScript系 ...

  5. JS高级学习笔记(9) 之 转:前端路由跳转基本原理

    原文链接: 前端路由跳转基本原理 前述 前端三大框架Angular.React和Vue都推行单页面应用SPA开发模式,这是因为在路由切换时,替换DOM Tree中发生修改的DOM部分,来减少原来因为多 ...

  6. JS高级学习笔记(10) 之 js 时怎么解析HTML标签的

    DOM 节点类型 浏览器渲染过程 浏览器是怎么把HTML标签语言和JavaScript联系在一起的,这就是我们常说的DOM. 浏览器中的DOM解析器把HTML翻译成对象(object),然后JavaS ...

  7. vue.js 源代码学习笔记 ----- core scedule.js

    /* @flow */ import type Watcher from './watcher' import config from '../config' import { callHook } ...

  8. vue.js 源代码学习笔记 ----- core array.js

    /* * not type checking this file because flow doesn't play well with * dynamically accessing methods ...

  9. js再学习笔记

    #js再学习笔记 ##基本 1.js严格区分大小写   2.js末尾的分号可加,也可不加   3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...

随机推荐

  1. SmartAssembly .net混淆后,无法找到部分类型

    两种解决方式: 1,在vs项目引用中,COM  嵌入互操作类型, 全部设为false. 2, 在混淆选项中,排除所有 引有的 外部COM类

  2. oracle通用帮助类

    需要的dll( EntityFramework.6.0.0Oracle.ManagedDataAccess.12.1.2400System.Configuration.dllEmitMapper.1. ...

  3. MQ的调用

    mq调用(相关dll) using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Collecti ...

  4. git 提取某次提交所修改的代码

    git 提取某次提交所修改的代码 应用场景 把分支A的某个功能抽到分支B中. 首先切换到分支B, 然后进行遴选(git cherry-pick). 如果没有冲突, 会自动合并然后使用原信息提交. 如果 ...

  5. maven集成SSM项目,Tomcat部署运行——SSM整合框架搭建(二)之问题

    问题一.当放开controller中的方法,出现如下问题 ### Error querying database. Cause: org.springframework.jdbc.CannotGetJ ...

  6. 工具类css框架

    @charset "UTF-8"; * {     -webkit-box-sizing: border-box;     box-sizing: border-box;      ...

  7. Oracle之SQL优化专题03-如何看懂SQL的执行计划

    专题第一篇<Oracle之SQL优化专题01-查看SQL执行计划的方法>讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划.毕竟如果 ...

  8. JDBC面试知识点整理(温习用)

    要面试,所以把之前的笔记整理一遍,嘻嘻,加油 JDBC编程 使用JDBC,java程序可以轻松地操作各种主流数据库,Oracle,MySQL,等,使用JDBC编写的程序不仅可以实现跨数据库,还具有跨平 ...

  9. Linux 下 zip 文件解压乱码如何解决

    作者:Latm Ake链接:https://www.zhihu.com/question/20523036/answer/35225920来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  10. 【BZOJ4237】稻草人

    题意 给定平面上 \(N\) 个关键点,询问有多少个矩形满足左下和右上各有一个关键点,且矩形中间没有关键点. \(N\le 2\cdot 10^5\) . 题解 我们按 \(x\) 排序分治,对于左右 ...