应用场景

需要把worker代码和业务代码写到一个文件内

const code = `
    onmessage = function(e){
        let { data } = e;
        let max = Math.max(data[0], data[data.length -1 ])
        postMessage({data, max})
}`


// 做法一: ObjectUrl
const blob = new Blob([code], { type: 'application/javascript' })
const url = URL.createObjectURL(blob)
console.log(url) // blob:null/82bcf279-3f19-43f4-96c0-207171f8f612

// 做法二:DataUrl
const url = `data:application/javascript;utf8,${code}`

console.log(url) 
// data:application/javascript;utf8,onmessage = function(e){let { data } = e;let max = Math.max(data[0], data[data.length -1 ]) postMessage({data, max})}




const worker = new Worker(url)
worker.onmessage = function({data}){
    console.log(`${data.data}中最大的值为${data.max}`)
}
worker.postMessage([Math.floor(Math.random() * 15), Math.floor(Math.random() * 15)])

本文链接:https://blog.smallhao.fun/?id=16 转载需授权!

分享到: