我有以下代码...
async function finish(){
console.log("Finishing");
console.time("fin");
let test = await new Promise(function(res){
setTimeout(()=>{res(test)}, 2000);
});
console.timeEnd("fin");
console.log(test);
};
process.on('exit', finish);
我希望它在退出时等待两秒钟,并输出接近2s的时间戳。但是,当我运行时,时间戳会更短,并且在完成后不会打印任何行。
如何等待退出超时?
答案 0 :(得分:3)
在node docs中,您不能在退出事件中使用异步代码。
侦听器功能只能执行同步操作。调用“退出”事件侦听器后,Node.js进程将立即退出,从而导致仍在事件循环中排队的任何其他工作都将被放弃。
如果要在退出之前安排其他工作(例如异步功能),则需要使用beforeExit。
process.on('beforeExit', finish);
话虽如此,您还需要认识到beforeExit仅在流程停止工作时才发出,因此a)如果明确要求终止(例如process.exit(),则不会发出) )和b)除非发生这种情况,否则它将继续发光。