我正在尝试使用此功能来延迟按Ctrl + c时进程的结束,但是该进程会立即停止而不执行任何操作。
(() => {
['SIGINT', 'SIGTERM', 'SIGQUIT']
.forEach(signal => process.on(signal, async () => {
let promise = new Promise((res, rej) => {
setTimeout(() => res("Now it's done!"), 3000)
});
// wait until the promise returns us a value
let result = await promise;
// "Now it's done!"
console.log("=======================YESSSSSSSSSS=======================")
}));
})();
答案 0 :(得分:0)
const wait = () => setTimeout(wait, 1000); // Loop to keep the process alive
process.on('SIGINT', () => {
setTimeout(() => {
/* Code to run before exiting */
process.exit()
}, 3000);
});
wait();
但是,这实际上并不检查是否已完成所有操作。如果发生一些I / O操作,则优雅地结束进程并不涉及为完成设置宽限期,而是让它们使用Promise.all()或其他方式以某种方式向他们报告完成后的情况。>