是否有可能创建一个“弱回调”(类似于“弱引用”),不会阻止node.js退出?我希望能够为长时间运行的异步任务定义“可选处理程序”,如果node.js进程仍在运行,它将被执行,但不会阻止事件队列被视为“空”本身。我没有这种构造的真实世界用例,我只是想知道node.js是否支持它(它可能需要原生扩展)。
这是一个非常简单的程序,它调用/bin/sh -c "sleep 9 ; ls"
并等待它完成。 node.js进程基本上处于空闲状态9秒,直到子进程完成。
var child_process = require("child_process");
child_process.exec("sleep 9 ; ls", function (err, stdout, stderr) {
console.log(stdout);
});
console.log("end");
我希望能够编写类似这样的内容,我正在使用setTimeout
来创建非弱回调,因此程序可以保证至少保持三秒钟。 (注意: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");
答案 0 :(得分:2)
如果是计时器,您可以使用unref这样的功能:
let timer = setTimeout(() => {
console.log('tick');
}, 3000);
timer.unref();
您似乎child_process.spawn
可以$Script = {
param($Computername)
get-process -Computername $Computername
}
@('Srv1','Srv2') | Run-Parallel -ScriptBlock $Script
。