最终来说-是否有一种实用的方法(也可以通过在代码中插入一些JS构造)来在执行期间中断或停止持久的JS代码?例如:它可以被某些process.*
对象构造或类似构造中断吗?还是相反?有效的解决方案甚至可以包括要终止和/或重新启动的NodeJS进程。谢谢!
杀死进程。
process.kill(pid, "SIGINT")
要“杀死”长期运行的功能,您需要一点技巧。没有优雅的解决方案。注入一个可以在长期运行功能之外进行更改的控制器。要从外部停止,请设置controller.isStopped = true
export const STOP_EXECUTION = Symbol();
function longRunning(controller){
... codes
// add stopping point
if(controller.isStopped) throw STOP_EXECUTION;
... codes
// add stopping point
if(controller.isStopped) throw STOP_EXECUTION;
... codes
}
// catch it by
try{
longRunnning();
}catch(e){
switch(true){
e === STOP_EXECUTION: ...; // the longRunning function is stopped from the outside
default: ...; // the longRunning function is throwing not because of being stopped
}
}
有关此内容的更多信息:https://nodejs.org/api/process.html#process_signal_events