0
点赞
收藏
分享

微信扫一扫

NodeJS 和 TypeScript 中使用线程

参考:

  • ​​https://wanago.io/2019/05/06/node-js-typescript-12-worker-threads/​​

由于 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'));


举报

相关推荐

0 条评论