2014-09-22 50 views
1

我有一些Node.js的代码一样,如何强制节点同步登录到控制台

console.log("diagnostic information"); 
nasty_stuff_fails_now(); 

由于执行console.log异步执行,但“nasty_stuff_fails_now()”事件循环的下一个前打勾失败我从来没有看到诊断信息。在执行na​​sty_stuff_fails_now()之前,如何将输出推送到控制台?理想情况下,我想同步推送到控制台。在调试过程中性能会受到影响。

+0

你也可以使用'的try ... catch()'错误调试/处理 – Ravi 2014-09-22 07:32:20

+0

这Node.js的版本,您使用的? – 2014-09-22 08:16:36

+0

node -v - > v0.10.31 – 2014-09-22 08:30:47

回答

0

我会争辩说,它使语义上和逻辑上更明智,让你使用try catch。

try { 
    nasty_stuff_fails_now(); 
} catch(exception) { 
    //log diagnostic for failure 
} 

console.log是原子的,所以它应该在运行失败的代码之前打印所有内容。如果你有一个自定义日志功能,那实际上是做异步事情。那么我建议你回复一个承诺。

logMyAsyncStuff().then(nasty_stuff_fails_now());