Node.js fs.writeFile在process.exit(0)执行之前asynchronous

我已经find了这个问题,但没有find任何好的答案。

我正在使用节点0.10.40。

我正在用child_process.execFile产生一个subprocess,在那个进程中,我正在用fs.writeFile做一些文件I / O。 但是,在fs.writeFile执行callback或filo I / O甚至完成之前,进程正在以process.exit(0)退出。

任何想法如何我可以延迟进程退出没有 setTimeout 。 我不想使用超时,因为如果我这样做,我不如使用fs.writeFileSync 。 有没有人find解决这个问题?

[编辑]

简单地把process.exit(0)放在fs.writeFile的callback中并不是我在这里寻找的,因为考虑这个场景:

你有一个产生subprocess的程序。 在这些subprocess中,执行HTTP请求,转储分组数据,对分组数据执行逻辑,然后终止进程

所以基本上把process.exit(0)放在writeFile的callback函数里,当你的subprocess所做的唯一事情就是这个文件I / O。 但是从更大的angular度来看,如果你真的想在这个过程中做一个体面的逻辑,并且不时地“转储”信息,那么这是行不通的。 这个过程的“寿命”不依赖于文件I / O。 这取决于您对分组数据执行的逻辑。 转储更多的是在这种情况下回顾和debugging。

你只需要确保你正在调用process.exit();fs.writeFile的callback中,例如:

文件index.js:

 var child_process = require('child_process'); child_process.exec('node b.js', function(error, stdout, stderr){ console.log(stdout); }); 

文件b.js:

 var fs = require('fs'); var count = 0; function ret(aux){ count++; if(count==4){ console.log("done i/o operation"); count = 0; process.exit(); } } fs.writeFile('message.txt', 'writing something...', 'utf8', ret); fs.writeFile('message.txt', 'writing something...', 'utf8', ret); fs.writeFile('message.txt', 'writing something...', 'utf8', ret); fs.writeFile('message.txt', 'writing something...', 'utf8', ret); 

编辑:我添加了多个I / O调用,你问的评论,基本上,你可以计算多less次你的callback被调用,当它达到预定义的值,你调用process.exit();