2012-10-13 36 views
0

我工作过非凡的Node.js,这似乎很大,到目前为止我的方式,但也有一些关于编写异步代码,并使用我不明白回调。Node.js的回调和何时退出

如果我有这样的代码:

myObject.doSomethingAsync(errorCallback); 
// all done, want to exit here, but errorCallback may be called 
… 

function errorCallback(args) { 
    // do something that takes a few seconds 
} 

请记住,我意味着退出;这是一个计划任务而不是服务器。

我怎么知道什么时候退出?如果总是调用errorCallback,它会更容易,但在使用一个模块的情况下,它不是。有这种有条件的回调是不是很奇怪?我该如何处理这个干净的?

+0

对于您使用的任何库,看起来像是一个糟糕的API。惯例通常总是调用回调函数,但如果没有任何错误,则传递NULL错误参数。 – PherricOxide

回答

1

在节点的约定是回调接受Error对象作为第一个参数。

http://blog.gvm-it.eu/post/22040726249/callback-conventions-in-node-js-how-and-why

你的回调应该得到呼吁成功和失败。成功时,err对象将为空。

当然这是约定,但可能有很多模块忽略了这个约定。您应该尝试修复您正在使用的模块或使用不同的模块。没事的时候剩下要做的

节点将退出过程。如果您在退出之前需要做某些事情,您可以监听process.exit。

http://nodejs.org/api/process.html#process_event_exit

+0

这很有道理;我会研究修复这个模块(在完成这本书之后!)。谢谢。 – thejav