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

广州专业网站建设价格新闻头条今日新闻60条

广州专业网站建设价格,新闻头条今日新闻60条,做网站购买服务器吗,企业手机端网站模板下载背景: 开启多线程处理一段耗时的逻辑 简化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.mmbaike.com/news/92387.html

相关文章:

  • 沈阳大型网站制作公司长春网络推广优化
  • 加盟广告北京seo公司排名
  • 西昌网站制作互联网营销的五个手段
  • 一站式做网站哪家专业网络推广方法怎么做
  • 做示意图的网站百度推广话术全流程
  • 西安115个高风险区降为低风险石家庄百度推广优化排名
  • 海口做网站多少钱郑州seo网站管理
  • 公司建立网站的好处软文营销的三个层面
  • 阿里巴巴网站开发是谁免费网站安全软件下载
  • 网站开发计什么科目网站首页排名
  • ai怎么做自己的网站网站建设合同模板
  • 怎么做免费的网站360优化大师官方最新
  • 网络营销的渠道是什么seo和sem
  • 南京医院网站建设宁德市人社局官网
  • wordpress 5发布优化方案官网电子版
  • 简单的个人主页网站制作html凡科建站的免费使用
  • 佛山seo整站优化最新舆情信息网
  • 如何制作自己的作品集网站想在百度做推广怎么做
  • 做网站怎样找精准营销的三要素
  • 西安直播网站开发今天实时热搜榜排名
  • 在线房屋设计网站广州推广排名
  • 中国建设银行网站新站seo优化快速上排名
  • 权重高的b2b网站58同城推广
  • 沈阳有资质做网站的公司网络营销的网站建设
  • 嘉兴专业的嘉兴专业网站建设项目汉川seo推广
  • 罗湖网站建设的公司哪家好首页关键词怎么排名靠前
  • 网站设计素材下载torrent种子猫
  • 中国建设通seo怎么读
  • 顺的网站建设信息重庆seo整站优化
  • 设计网站一般要多少钱武汉seo网络营销推广