• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

NodeJS 和 TypeScript 使用线程

武飞扬头像
手搓葫芦
帮助1

参考:

由于 ts-node 和 nodemon 直接 使用 worker_threads 有问题。需要一个代理js

主流程 main.ts

import { Worker } from 'worker_threads';

console.log(`[Main] Run in ${process.env.NODE_ENV} env`);

// Instanciate worker
const myWorker: Worker = new Worker(process.env.NODE_ENV === 'production' ? './task.js' : './src/task_proxy.js');

// On worker online
myWorker.on('online', () => {
  console.log(`[Main] Worker is online and executing code!`);
  myWorker.postMessage('ss');
});
myWorker.on('message', () => {
  console.log(`[Main] Worker is done!`);
});
// On worker exit
myWorker.on('exit', (code) => {
  console.log(`[Main] Worker execution is over with code: ${code}`);
});

// On worker error
myWorker.on('error', (error) => {
  // Sometime stack is undefined, we can stringify error instead
  console.log(`[Main] Worker catch an error: ${error.stack || JSON.stringify(error)}`);
});

工作脚本 task.ts

import { parentPort } from 'worker_threads';
parentPort?.once('message', (message) => {
  console.log('[Worker] running:', message);
  parentPort?.postMessage({ pong: message });
});

代理脚本 task_proxy.js

const path = require('path');
require('ts-node').register();
require(path.resolve(__dirname, 'task.ts'));

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibeiek
系列文章
更多 icon
同类精品
更多 icon
继续加载