js的server worker创建子进程

类似nodejs的 child_process.fork()

// index.html 主线程

  function isClose(data){
if(data === 0)
return true;
}
var myWorker = new Worker("worker.js"); myWorker.addEventListener('error',err=>{
console.log( err);
}, false); myWorker.addEventListener('message',msg=>{
// 监听子线程发来的 数据
console.log( msg.data); if( isClose(msg.data) ){
// 干掉子进程
myWorker.terminate();
}
}, false); setTimeout(function(){
// 发更子进程的数据
myWorker.postMessage('frok')
}, 2000);
// worker.js 子线程

// 加载 fn.js 文件
importScripts('fn.js'); console.log(123); // 向主线程发送 data
postMessage('over 123'); // 接收主线程发来的的数据
onmessage = (e)=>{
check(e.data);
console.log( e.data);
}
// fn.js

function check(data){
console.log( data.constructor.name );
}

动态创建server.js文件

const workerJSString = `
// 接收主线程发来的的数据
onmessage = ({data})=>{
// 向主线程发送data
console.log(\`接收到主线程发来的数据: \${data}\`);
postMessage(data ** 2);
}
`;
const workerBlob = new Blob([workerJSString], {
type: "text/javascript"
});
const url = URL.createObjectURL(workerBlob);
const myWorker = new Worker(url); // 监听子线程发来的 数据
myWorker.addEventListener("message", ({ data }) => {
console.log(data); // 9
}); setTimeout(function () {
// 向子进程的数据
myWorker.postMessage(3);
}, 2000);
上一篇:couldn't set tty to ppp discipline invalid argument


下一篇:uniapp封装公共请求typescript版