停止主/当前线程并让回调完成

时间:2017-11-10 11:38:30

标签: javascript node.js multithreading

本质上我有一段代码有点像:

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语句后的线程?

2 个答案:

答案 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。所以“一切都好!”如果failingConditiontrue,则不会记录。

如果您在方法中使用此功能,则应尝试在return;阻止中使用logger.log()后的if

如果您尝试捕获异常,则应使用try / catch块。

希望它有所帮助!