编辑:这似乎无法做到,因为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()
但是没有用。
答案 0 :(得分:1)
以下是您要实现的目标的简化版本:
var fs = require ("fs");
var s;
var init = function (cb){
cb ();
};
var shutdown = function(error){
console.log(error);
process.exit();
};
init(function (){
s = fs.createWriteStream("?invalid");
s.on("error", shutdown);
s.on ("close", shutdown);
});