首页 > 其他分享 >【Worker】js使用多线程实现倒计时

【Worker】js使用多线程实现倒计时

时间:2022-12-30 10:23:20浏览次数:38  
标签:ss Worker chaTime js 60 mm hh var 多线程

tremaintime.js
主要用于计算时间,放到assets目录,因为Worker需要请求获取这个文件的,要同源

onmessage = function ({ data }) {
  setInterval(() => {
    postMessage(initremainTime(data)) // 发送信息到主线程
  }, 1000)
}

function initremainTime(endTime) {//倒计时
  var data = new Date();
  var nowTime = data.getTime();
  var chaTime = endTime - nowTime;
  //倒计时的时间
  if (chaTime >= 0) {
    var d = parseInt('' + chaTime / 1000 / 60 / 60 / 24);
    var h = parseInt('' + chaTime / 1000 / 60 / 60 % 24);
    var m = parseInt('' + chaTime / 1000 / 60 % 60);
    var s = parseInt('' + chaTime / 1000 % 60);
  }
  let hh, mm, ss;

  if (h < 10) {
    hh = '0' + h;
  } else {
    hh = h
  }

  if (m < 10) {
    mm = '0' + m;
  } else {
    mm = m
  }
  if (s < 10) {
    ss = '0' + s;
  } else {
    ss = s
  }
  return {
    hh,
    mm,
    ss
  }
}

page.vue
页面文件,创建线程,接受返回值

// 多线程计算时间,兼容性未知
const work = new Worker('assets/js/tremaintime.js')
work.postMessage(endTime) // 发送结束时间给线程,就是tremaintime.js文件,通过data接收
work.onmessage = (message) => {
  const { hh, mm, ss } = message.data
  this.countdown = hh + ':' + mm + ':' + ss // 渲染到html即可
  if (+hh == 0 && +mm == 0 && +ss == 0) {
    // 倒计时结束,关闭线程
    work.terminate();
  }
}

标签:ss,Worker,chaTime,js,60,mm,hh,var,多线程
From: https://www.cnblogs.com/zh1q1/p/17014205.html

相关文章

  • 【js逆向爬虫】-有道翻译js逆向实战
    目录​​网页分析​​​​初步代码实现​​​​逆向查找参数​​​​改写代码​​​​成果展示​​​​         我是毕加锁(锁!) 期待你的关注​​大......
  • js使用escape编码、unescape解码、
     一、js使用escape编码编码前//编码前的JSON.stringify(playitemArr)"console.error("编码前的JSON.stringify(playitemArr)");console.error(JSON.stringify(playi......
  • nodejs express multer 中文名乱码【转】
    文件上传服务器端接收的文件列表中文件名不支持中文,都是乱码,查询发现nodejs对中文支持的不好。找了半天,发现这个解决方法确实有效!!!!!核心代码//解决中文名乱码的问题f......
  • P1198 JSOI2008 最大数
    P1198JSOI2008最大数-洛谷|计算机科学教育新生态(luogu.com.cn)采用ST表维护RMQ。对于插入操作,设插入后数列长度变为\(n\),我们只需重新修改满足\(i+2^j-......
  • JS Date
    镇楼图Pixiv:torinoDate构造DateJS中Date提供了时间日期相关的操作Unix时间戳:指自1970年1月1日00:00:00UTC开始经过的毫秒数,为一整数值,这也是大多数编程语言......
  • JS高级
    this指向分析指向直接调用,指向window通过对象调用,指向对象call/apply总结:跟位置无关,跟调用方式有关。只有在执行的时候this指向才会被确定绑定规则:默认......
  • JS对象
    声明对象方式对象字面量varobj1={name:'xx',age:88,}newObject()varobj2=newObject()obj2.name='xx'new自定义类functionPerson(){}varobj3......
  • JS事件
    事件处理三种方案元素上el.onclickwindow.addEventListener(fn)事件流事件冒泡:默认情况下事件是从最内层往外传递的顺序,这个顺序就称为事件冒泡事件捕获:从外层到......
  • JS中回调函数的概念
    概要:Js中回调函数的概念...个人理解:回调函数的定义:将一个函数作为参数的形式传入另一个函数中,那么这个函数就是回调函数,另一个函数可以决定在何时何处调用这个传入的回......
  • JS数据在内存中的存储方式
    概要:Js数据类型在内存中的存储形式......Js数据类型:简单数据类型(基本数据类型):Number、String、Boolean、Undefined、Null复杂数据类型(引用数据类型):Object、Array、Fu......