我有以下代码...
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的时间戳。但是,当我运行时间戳时,时间戳较短,并且在完成后不会打印任何线。
我如何等待退出?
从节点文档中,您不能在退出事件中使用异步代码。
侦听器函数只能执行同步操作。node.js进程将在调用"退出"事件听众后立即退出,导致事件循环中仍排队的任何其他工作。
如果您想在退出之前安排其他工作(例如,您的异步功能),则需要先使用。
process.on('beforeExit', finish);
话虽如此,您还需要认识到,只有在该过程失业时才发出之前的验证,因此a)如果某些东西明确要求终止,则不会发出(例如process.exit.exit())和b)除非发生这种情况,否则它将一直发出。