是否有任何编程方法可以打破NodeJS中的无限循环?

问题描述 投票:0回答:1

最终来说-是否有一种实用的方法(也可以通过在代码中插入一些JS构造)来在执行期间中断或停止持久的JS代码?例如:它可以被某些process.*对象构造或类似构造中断吗?还是相反?有效的解决方案甚至可以包括要终止和/或重新启动的NodeJS进程。谢谢!

node.js asynchronous process infinite-loop
1个回答
0
投票

杀死进程。

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

© www.soinside.com 2019 - 2024. All rights reserved.