编辑:这似乎是不可能的,因为createWriteStream()
和其他错误发射器不一定会在下一个滴答声中发出错误,所以这个等待不能完成。实际上,如果我shutdown()
这意味着我想立即完成该过程,那么如果我没有收到任何错误就可以了。
var fs = require ("fs");
var s;
var init = function (cb){
cb ();
};
var shutdown = function (cb){
cb (wait);
};
var wait = function (){
//Some kind of wait
process.exit ();
};
init (function (){
s = fs.createWriteStream ("?invalid").on ("error", console.error); //This emits an error
});
shutdown (function (cb){
s.on ("close", function (error){
if (error) console.error (error);
cb ();
});
s.end ();
cb ();
});
如果您执行此代码,您将不会收到任何错误,因为该过程在打印错误之前完成。如果您将wait()
功能更改为此,
var wait = function (){
//Some kind of wait
setTimeout (function (){
process.exit ();
}, 1000);
};
打印错误并在 1 秒后完成该过程。我想等待错误回调,然后在不设置计时器的情况下退出。我试过了,nextTick()
但没有用。