Javascript Node.js和Jake-如何在任务中同步调用系统命令?
Jake任务执行长时间运行的系统命令。另一项任务取决于第一项任务在开始之前是否已完全完成。“child_process”的“exec”函数异步执行系统命令,使第二个任务可以在第一个任务完成之前开始 编写文件以确保第一个任务中的长时间运行的系统命令在第二个任务开始之前完成,最干净的方法是什么 我曾经考虑过在第一个任务结束时在一个虚拟循环中使用轮询,但这听起来很糟糕。看来一定有更好的办法。我看到了,但它并没有完全解决我的问题Javascript Node.js和Jake-如何在任务中同步调用系统命令?,javascript,node.js,jake,Javascript,Node.js,Jake,Jake任务执行长时间运行的系统命令。另一项任务取决于第一项任务在开始之前是否已完全完成。“child_process”的“exec”函数异步执行系统命令,使第二个任务可以在第一个任务完成之前开始 编写文件以确保第一个任务中的长时间运行的系统命令在第二个任务开始之前完成,最干净的方法是什么 我曾经考虑过在第一个任务结束时在一个虚拟循环中使用轮询,但这听起来很糟糕。看来一定有更好的办法。我看到了,但它并没有完全解决我的问题 var exec = require('child_process').e
var exec = require('child_process').exec;
desc('first task');
task('first', [], function(params) {
exec('long running system command');
});
desc('second task');
task('second', ['first'], function(params) {
// do something dependent on the completion of 'first' task
});
我通过重读找到了自己问题的答案。对于那些想知道如何做的人:
var exec = require('child_process').exec;
desc('first task');
task('first', [], function(params) {
exec('long running system command', function() {
complete();
});
}, true); // this prevents task from exiting until complete() is called
desc('second task');
task('second', ['first'], function(params) {
// do something dependent on the completion of 'first' task
});
仅供将来参考,我有一个同步exec模块,没有其他依赖项
var allsync = require("allsync");
allsync.exec( "find /", function(data){
process.stdout.write(data);
});
console.log("Done!");
在上例中,
Done
仅在find
过程存在后打印。exec
函数基本上会阻塞直到完成。为什么不让第一个任务在完成时发出一个信号,然后该信号的侦听器生成第二个任务?