2017-03-15 43 views
2

是否有可能創建一個不會阻止node.js退出的「弱回調」(類似於「弱引用」)?我希望能夠爲長時間運行的異步任務定義一個「可選處理程序」,如果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"); 

回答

1

在計時器的情況下,你可以使用unref功能這樣:

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

貌似可以do the samechild_process.spawn