我正在通过Smashing 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 :(得分:1)
Node中的约定是让回调接受一个Error对象作为第一个参数。
http://blog.gvm-it.eu/post/22040726249/callback-conventions-in-node-js-how-and-why
应该在成功和失败时调用您的回调。成功时,错误对象将为null。
当然这是惯例,但可能有很多模块忽视了这个惯例。您应该尝试修复正在使用的模块或使用其他模块。
当没有任何事情要做时,Node将退出该进程。如果您需要在退出之前执行某些操作,则可以侦听process.exit。