使用Node自动化我的某些bash进程。
const { exec } = require("child_process");
let buildCommand = "docker build -t vm1:v1 ./nginx1 "
let runCommand = "docker run -d -p 6001:6001 --name clientvm1 vm1:v1"
//run first command
exec(buildCommand, (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
//run second command
exec(runCommand, (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
让第二条命令等待第一条命令完成的最佳方法是什么?
答案 0 :(得分:1)
我当然不是专家,但是也许您可以将第二种方法包装在异步方法中,然后等待第一种方法进入内部?
method1() {
return new Promise((resolve, reject) => {
resolve(exec(buildCommand));
}).catch((err) => throw new Error(err));
}
async method2() {
await method1();
exec(runCommand);
}
这可能远非万无一失,但我认为它应该可以满足您的需求。