Node.js创build“弱callback”,不阻止进程退出

是否有可能创build一个“弱callback”(通过类比“弱引用”),不阻止node.js退出? 我希望能够为长期运行的asynchronous任务定义一个“可选处理程序”,如果node.js进程仍在运行,但是不会阻止事件队列被“空”本身。 我没有一个真正的世界用例这样的构造,我只是想知道,如果node.js支持它(它可能需要本地扩展)。

这是一个非常简单的程序,它调用/bin/sh -c "sleep 9 ; ls"并等待它完成。 node.js进程基本上闲置9秒,直到subprocess结束。

 var child_process = require("child_process"); child_process.exec("sleep 9 ; ls", function (err, stdout, stderr) { console.log(stdout); }); console.log("end"); 

我希望能够写这样的东西,我使用setTimeout来创build一个非弱的callback,所以程序保证至less保持三秒钟。 (注意: child_process.exec确实有一个超时选项,但是必须事先设置,而这个方法允许在事实之后改变最后期限)

 var child_process = require("child_process"); child_process.exec_weakly("sleep 9 ; ls", function (err, stdout, stderr) { console.log(stdout); }); setTimeout(function() {}, 3000); // prevent exit for at least three seconds console.log("end"); 

在定时器的情况下,你可以像这样使用unref函数:

  let timer = setTimeout(() => { console.log('tick'); }, 3000); timer.unref(); 

看起来你可以为child_process.spawn 执行相同的child_process.spawn