当前位置: 首页 > news >正文

广州专业网站建设价格宁波seo推广咨询

广州专业网站建设价格,宁波seo推广咨询,番禺区核酸检测点,测试wordpress响应速度慢背景: 开启多线程处理一段耗时的逻辑 简化Worker使用 直接上代码: 以下是封装的函数直接复制即可 /*** 封装一个worker的启动函数 用于开启一个新的线程 来处理一些耗时的操作* param {object} paremdata 传递给worker的参数* param {function} call…

背景:

开启多线程处理一段耗时的逻辑

简化Worker使用

直接上代码:
以下是封装的函数直接复制即可

/*** 封装一个worker的启动函数 用于开启一个新的线程 来处理一些耗时的操作* @param {object} paremdata 传递给worker的参数* @param {function} callbackFun 回调函数* @param {function} getDataCallback 接收worker返回的数据的回调函数*/function worderHandle ({paremdata = {},callbackFun = () => { },getDataCallback = () => { },}) {const myWorker = new Worker(funToBlobURL(worderFun))// 监听来自Worker的消息let data = {}myWorker.onmessage = function (e) {// console.log('收到来自Worker的消息:', e.data)getDataCallback(e.data)}myWorker.postMessage({data: {...paremdata,},callbackFuns: callbackFun.toString()})// 此处的变量与外侧全局变量隔离 无法访问到的function worderFun () {self.onmessage = async function (e) {// console.log('收到来自主线程的消息:', e.data)let callbackFuns = eval(e.data.callbackFuns)try {let pdata = await callbackFuns(e.data.data)self.postMessage(pdata)} catch (error) {self.postMessage(error)}}}/*** 函数转异步链接* @param {string} message 要发送的消息*/function funToBlobURL (fun) {if (!fun) {return ''}/*** 将文本内容转换为Blob URL* @param {string} textContent 文本内容* @returns {string} Blob URL*/function txtToBlobURL (textContent = '这是一段示例文本') {// 创建Blob对象,指定MIME类型为'text/plain'const blob = new Blob([textContent], { type: 'text/plain' })// 创建指向该Blob对象的URLconst blobUrl = URL.createObjectURL(blob)// console.log(blobUrl) // 输出Blob URL// 当不再需要Blob URL时setTimeout(() => {URL.revokeObjectURL(blobUrl)}, 0)return blobUrl}return txtToBlobURL(`(${fun.toString()})()`)}}

用法示例

let workData = {paremdata: {  // 传入的初始参数a: 123,},callbackFun: (res) => {  // 接收的是paremdata 的数据 由于 worder函数是独立的所以必须使用这种方式 注意此处无法访问当前环境的任何参数,只能使用 res 因此你必须在paremdata 传到这个函数才行  此方法支持同步和异步。一般耗时操作多为异步console.log('回调函数执行', res)return new Promise((resolve, reject) => {setTimeout(() => {// reject('出错了')resolve(res.a + 100)}, 5000)})},getDataCallback: (res) => {// 接收callbackFun 返回的结果的   then和catch 都会到这里。 如果想区分可修改上面的方法。来满足自身的需求console.log('接收到的数据 getDataCallback执行', res)}}worderHandle(workData)

如有问题,可提出,共勉

注意:
该方法暂未做兼容,以下是兼容浏览器。
目测大部分主流浏览器都支持的。也无伤大雅
在这里插入图片描述

http://www.jinmujx.cn/news/79215.html

相关文章:

  • 用flask做的网站有哪些怎样推广自己的网站
  • 郑州有没有做妓男平台以及网站影视后期哪个培训靠谱
  • pc端宣传网站开发代写文章哪里找写手
  • 南京关键词网站排名房地产销售怎么找客户
  • jsp高级动态网站开发试卷百度人工优化
  • 怎么知道网站的域名自己建网站怎么弄
  • 哪个企业提供电子商务网站建设外包电商网店
  • 免费做优化的网站建设公司网站设计模板
  • 品牌宣传策划方案公司以优化为理由裁员合法吗
  • 营销型网站建设网盘搜索引擎
  • 手机做服务器搭网站惠州seo报价
  • 网站建设与网页设计制作教程香港seo公司
  • 蝌蚪窝一个释放做网站定制网站
  • 动态网页设计总结台州seo优化
  • 呼和浩特网站建设宣传百度站长平台网站提交
  • 网络服务器监控系统福建seo搜索引擎优化
  • 设计比例网站搜索引擎营销包括
  • 网站制作要用哪些软件有哪些长沙seo优化价格
  • 许嵩做的网站抖音账号权重查询入口
  • 网站做管理后台需要知道什么竞猜世界杯
  • 沈阳做网站优化的公司哪家好seo查询友情链接
  • 做网站什么配置够用seo搜索引擎优化怎么做
  • 网站建设售后支持最大免费发布平台
  • 网站经常被黑seo是什么意思新手怎么做seo
  • wordpress 地图导航代码seo优化工具哪个好
  • 网站内页是什么新软件推广
  • 浙江建设厅官方网站报名b证b站视频推广
  • 如何查看网站域名信息长春百度推广公司
  • 网站怎么让百度收录一张图做封面正规seo需要多少钱
  • 我做动作你来猜的网站成都百度推广