本质上我有一段代码有点像:
function closeServerGracefully() {
setTimeout(process.exit, 1000);
}
if (failingCondition) {
logger.log('error', 'Fatal error exiting because failingCondition', closeServerGracefully);
}
logger.log('info', 'Everything is ok!');
(logger.log
的最后一个参数是一个回调函数,在记录消息后调用,我使用的是winston)
但是,如果failingCondition
确实变为现实,我的应用会输出:
Fatal error exiting because failingCondition
Everything is ok!
然后当然它会在一段时间后崩溃,因为问题没有得到妥善处理。
如何停止(或暂停或终止)" main"的执行?输入if
语句后的线程?
答案 0 :(得分:1)
你无法阻止主线程,你只能模拟“停止”
What's the equivalent of Java's Thread.sleep() in JavaScript?
您可以尝试不停地执行此操作:
if (failingCondition) {
logger.log('error', 'Fatal error exiting because failingCondition', closeServerGracefully);
} else {
logger.log('info', 'Everything is ok!');
}
答案 1 :(得分:-1)
这是因为在超时之前调用了最后一个日志方法。
你可以尝试的事情:
您可以尝试在那里使用else
。所以“一切都好!”如果failingCondition
为true
,则不会记录。
如果您在方法中使用此功能,则应尝试在return;
阻止中使用logger.log()
后的if
。
如果您尝试捕获异常,则应使用try / catch块。
希望它有所帮助!