我如何在使用节点的proccess出口回调中等待settimeout



我有以下代码...

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)除非发生这种情况,否则它将一直发出。

最新更新