javascript - 有没有办法强制终止 node.js 中的工作线程?
问题描述
我四处寻找我的问题,但无济于事。我想知道是否有办法强制工作人员终止工作线程,即使其任务尚未完成。我有一些代码,如果它以某种方式失败,它会调用自己,这是故意的,即使它可能是不好的代码实践。我尝试使用诸如微作业和线程之类的库,但这些库没有我想要的。这是我尝试对线程执行的操作,但没有成功:
// Module part of threads (taskModule)
expose(async function startTask(taskData, profileData, taskID) {
await _Task.FetchData(taskData);
await _Task.GenerateSession(profileData);
await _Task.RequestPermission(taskID);
await _Task.SubmitOrder();
return "finished";
})
// Runs the module (main.js)
const {spawn, Thread, Worker} = require("threads");
let task = null;
async function test() {
task = await spawn(new Worker('./taskModule'))
startTask({},{},"0")
}
setTimeout(async function() {
await Thread.terminate(task)
}, 3000)
test().then(() => {
console.log('hello')
}).catch(console.error)
我试图测试代码是否会在 3 秒后停止测试,但它似乎还在继续。有没有更好的方法来完成这类任务?
谢谢你的帮助。
解决方案
我已经通过在 Node.JS 中使用集群解决了我的问题,它使用child_process
来运行工作程序。
如果有人需要,这里是文档的链接:https ://nodejs.org/api/cluster.html
推荐阅读
- r - 如果我对每个基因的原始信息是它们的 ENSEMBL ID,我如何使用 select(org.Mm.eg.db) 函数在 R 中注释我的基因?
- nginx - Nginx 捕获并重写所有以 /api 开头的请求到代理
- flutter - 在 gridview.builder 中强制关闭应用程序加载图像
- excel - 可以在电子邮件正文字符串中使用列中的值(例如名称)吗?
- postgresql - postgresql.conf 文件被忽略
- excel - 使用 VBA 在一个单元格中查找每个逗号分隔值并返回电子邮件
- python - 我编写了一个自定义函数来从 csv 文件中获取数据,该函数在代码中不能多次使用
- uikit - UIKit Tabview 到屏幕顶部
- typeahead.js - Typeahead js 不工作,从另一个工作中复制的相同结构
- r - IBrokers:循环遍历 r 中 reqHistoricalData 的 endDateTime 和 twsEquity 参数对的数据帧