zoukankan      html  css  js  c++  java
  • 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);
    
  • 相关阅读:
    yii 验证码功能的实现
    关于php优化 你必须知道的一些事情
    php实现两分法查找
    Python封装的访问MySQL数据库的类及DEMO
    新学习的Python的代码(while循环)
    基于位运算符的IP和数值转换
    JS数组操作常用方法
    JS输出日历
    PHP程序输出日历
    PHP中计算时间差(上周,上月,去年,昨天等)
  • 原文地址:https://www.cnblogs.com/ajanuw/p/8108902.html
Copyright © 2011-2022 走看看