B2B网络软件

标题: 安卓脚本线程全局变量H5可视化控制台 [打印本页]

作者: YYPOST群发软件    时间: 3 小时前
标题: 安卓脚本线程全局变量H5可视化控制台
安卓脚本线程全局变量H5可视化控制台


安卓脚本线程全局变量H5可视化控制台 B2B网络软件


安卓脚本线程全局变量H5可视化控制台 B2B网络软件

  1. //用多线程异步子任务运行一个定时
  2. // AIWROK 多线程实时日志监控系统
  3. var threads = {};
  4. var threadStatus = {
  5.     countdown: 'running',
  6.     randomLetter: 'running',
  7.     randomTime: 'running',
  8.     randomNumber: 'running'
  9. };

  10. // 辅助函数:将英文状态转换为中文
  11. function getStatusText(status) {
  12.     if(status === 'running') return '正在运行';
  13.     if(status === 'stopping') return '正在停止';
  14.     if(status === 'stopped') return '已停止';
  15.     return status;
  16. }

  17. // 日志输出函数 - 同时输出到控制台和H5界面
  18. function logToH5(message, level) {
  19.     // 输出到控制台
  20.     console.log(message);
  21.    
  22.     // 输出到H5界面(如果LogManagerH5可用)
  23.     if(typeof LogManagerH5 !== 'undefined' && LogManagerH5.info) {
  24.         try {
  25.             switch(level) {
  26.                 case 'success':
  27.                     LogManagerH5.success(message);
  28.                     break;
  29.                 case 'warn':
  30.                     LogManagerH5.warn(message);
  31.                     break;
  32.                 case 'error':
  33.                     LogManagerH5.error(message);
  34.                     break;
  35.                 case 'gold':
  36.                     LogManagerH5.gold(message);
  37.                     break;
  38.                 default:
  39.                     LogManagerH5.info(message);
  40.             }
  41.         } catch(e) {
  42.             // 如果H5日志失败,至少控制台有输出
  43.         }
  44.     }
  45. }

  46. // 线程1: 倒计时线程 (每10分钟倒计时)
  47. threads.countdown = new thread().runJsCode(function fun(){
  48.     logToH5("[倒计时线程] 启动 - 开始10分钟倒计时", 'info');
  49.     var startTime = Date.now();
  50.     while(threadStatus.countdown === 'running') {
  51.         var elapsed = Math.floor((Date.now() - startTime) / 1000);
  52.         var remaining = 600 - elapsed; // 10分钟 = 600秒
  53.         if(remaining <= 0) {
  54.             logToH5("[倒计时线程] 倒计时结束!", 'success');
  55.             break;
  56.         }
  57.         logToH5("[倒计时线程] 剩余时间: " + remaining + " 秒", 'info');
  58.         sleep.second(1);
  59.     }
  60.     threadStatus.countdown = 'stopped';
  61.     logToH5("[倒计时线程] 已停止", 'warn');
  62. }, "-倒计时线程")

  63. // 线程2: 随机字母生成线程
  64. threads.randomLetter = new thread().runJsCode(function fun(){
  65.     logToH5("[随机字母线程] 启动", 'info');
  66.     while(threadStatus.randomLetter === 'running') {
  67.         var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  68.         var randomIndex = Math.floor(Math.random() * letters.length);
  69.         var randomLetter = letters.charAt(randomIndex);
  70.         logToH5("[随机字母线程] 生成随机字母: " + randomLetter, 'gold');
  71.         sleep.second(1);
  72.     }
  73.     threadStatus.randomLetter = 'stopped';
  74.     logToH5("[随机字母线程] 已停止", 'warn');
  75. }, "-随机字母线程")

  76. // 线程3: 随机时间段显示线程
  77. threads.randomTime = new thread().runJsCode(function fun(){
  78.     logToH5("[随机时间线程] 启动", 'info');
  79.     while(threadStatus.randomTime === 'running') {
  80.         var hours = Math.floor(Math.random() * 24);
  81.         var minutes = Math.floor(Math.random() * 60);
  82.         var seconds = Math.floor(Math.random() * 60);
  83.         var timeStr = String(hours).padStart(2, '0') + ':' +
  84.                       String(minutes).padStart(2, '0') + ':' +
  85.                       String(seconds).padStart(2, '0');
  86.         logToH5("[随机时间线程] 随机时间: " + timeStr, 'info');
  87.         sleep.second(1);
  88.     }
  89.     threadStatus.randomTime = 'stopped';
  90.     logToH5("[随机时间线程] 已停止", 'warn');
  91. }, "-随机时间线程")

  92. // 线程4: 随机数字生成线程
  93. threads.randomNumber = new thread().runJsCode(function fun(){
  94.     logToH5("[随机数字线程] 启动", 'info');
  95.     while(threadStatus.randomNumber === 'running') {
  96.         var randomNumber = Math.floor(Math.random() * 1000); // 0-999之间的随机数
  97.         logToH5("[随机数字线程] 生成随机数字: " + randomNumber, 'success');
  98.         sleep.second(1);
  99.     }
  100.     threadStatus.randomNumber = 'stopped';
  101.     logToH5("[随机数字线程] 已停止", 'warn');
  102. }, "-随机数字线程")

  103. // 线程5: 监控线程 - 获取其他线程状态并在10秒后停止所有线程
  104. threads.monitor = new thread().runJsCode(function fun(){
  105.     logToH5("[监控线程] 启动 - 将监控其他线程状态", 'info');
  106.     var startTime = Date.now();
  107.     var elapsedSeconds = 0;
  108.    
  109.     // 辅助函数:将英文状态转换为中文
  110.     function getStatusText(status) {
  111.         if(status === 'running') return '正在运行';
  112.         if(status === 'stopping') return '正在停止';
  113.         if(status === 'stopped') return '已停止';
  114.         return status;
  115.     }
  116.    
  117.     // 监控10秒钟
  118.     while(elapsedSeconds < 10) {
  119.         logToH5("[监控线程] 当前各线程状态 (已运行 " + elapsedSeconds + " 秒):", 'info');
  120.         logToH5("  - 倒计时线程: " + getStatusText(threadStatus.countdown), 'info');
  121.         logToH5("  - 随机字母线程: " + getStatusText(threadStatus.randomLetter), 'info');
  122.         logToH5("  - 随机时间线程: " + getStatusText(threadStatus.randomTime), 'info');
  123.         logToH5("  - 随机数字线程: " + getStatusText(threadStatus.randomNumber), 'info');
  124.         
  125.         sleep.second(1); // 使用second代替millisecond
  126.         elapsedSeconds++;
  127.     }
  128.    
  129.     logToH5("[监控线程] 10秒已到,正在停止所有线程...", 'warn');
  130.    
  131.     // 更新状态标记
  132.     threadStatus.countdown = 'stopping';
  133.     threadStatus.randomLetter = 'stopping';
  134.     threadStatus.randomTime = 'stopping';
  135.     threadStatus.randomNumber = 'stopping';
  136.    
  137.     // 等待一小段时间让其他线程检测到状态变化并自行停止
  138.     sleep.second(1);
  139.    
  140.     // 强制停止所有工作线程
  141.     try {
  142.         if(threads.countdown && threads.countdown.isAlive()) {
  143.             threads.countdown.interrupt();
  144.             logToH5("[监控线程] 已中断倒计时线程", 'success');
  145.         }
  146.     } catch(e) {
  147.         logToH5("[监控线程] 停止倒计时线程时出错: " + e.message, 'error');
  148.     }
  149.    
  150.     try {
  151.         if(threads.randomLetter && threads.randomLetter.isAlive()) {
  152.             threads.randomLetter.interrupt();
  153.             logToH5("[监控线程] 已中断随机字母线程", 'success');
  154.         }
  155.     } catch(e) {
  156.         logToH5("[监控线程] 停止随机字母线程时出错: " + e.message, 'error');
  157.     }
  158.    
  159.     try {
  160.         if(threads.randomTime && threads.randomTime.isAlive()) {
  161.             threads.randomTime.interrupt();
  162.             logToH5("[监控线程] 已中断随机时间线程", 'success');
  163.         }
  164.     } catch(e) {
  165.         logToH5("[监控线程] 停止随机时间线程时出错: " + e.message, 'error');
  166.     }
  167.    
  168.     try {
  169.         if(threads.randomNumber && threads.randomNumber.isAlive()) {
  170.             threads.randomNumber.interrupt();
  171.             logToH5("[监控线程] 已中断随机数字线程", 'success');
  172.         }
  173.     } catch(e) {
  174.         logToH5("[监控线程] 停止随机数字线程时出错: " + e.message, 'error');
  175.     }
  176.    
  177.     logToH5("[监控线程] 所有线程已停止,脚本即将结束", 'success');
  178.    
  179.     // 最后停止所有脚本
  180.     stopAll();
  181. }, "-监控线程")

  182. logToH5("所有线程已启动,监控线程将在10秒后停止所有其他线程", 'success');
复制代码







欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2