请问如何在react里用上web worker

会报错误Uncaught SyntaxError: Unexpected token <

阅读 12.4k
3 个回答
const workercode = () => {

  self.onmessage = function (e) {
    postMessage ('123213')
  }

}

let code = workercode.toString()
code = code.substring(code.indexOf('{')+1, code.lastIndexOf('}'))

const blob = new Blob([code], {type: 'application/javascript'})

const worker_script =  URL.createObjectURL(blob)


export default worker_script

webworker创建有两种方式,一种是引入外部js,还有一种是用就是脚本字符串的方式
1.
new Worker('worker.js')
2.

var blob = new Blob([document.querySelector('#worker').textContent]); // textContent为字符串脚本
var url = window.URL.createObjectURL(blob);
var worker = new Worker(url);

react中引入外部js会报错,可以考虑使用第二种方式创建Worker

参考阮一峰大大的文章 http://www.ruanyifeng.com/blo...

3.针对react项目的代码可能需要经过webpack打包。所以引入外部worker.js可能导致路径不对,可以将外部worker.js放在项目根目录,和html同一个目录,这样创建worker的时候就不会报错了!测试有效哦

// 组件内部
const worker = new Worker('./uploadWorker.js');

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏