【发布时间】:2020-08-22 08:35:09
【问题描述】:
我的路由中有多个函数,并且想要执行它们,例如,如果前一个函数已成功执行,控件应该只移动到下一个函数。例如参考下面的代码,我希望先执行任务1,然后执行任务2,依此类推。设置超时或等待似乎不是一种有效的方法,我是否需要添加异步函数或类似的东西?
代码.js
var task1 = cp.exec('docker images', function (error, stdout, stderr) {
console.log('Version: ' +version);
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
var task2 = cp.exec('docker pull mongo:'+version, function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
var task3 = cp.exec('docker run -d -p '+port2+':27017 -v '+volumeLoc+' --name '+containerName+' mongo:'+version, function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
var task4 = cp.exec('docker ps | grep mongo', function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
【问题讨论】:
-
更简单的方法是在前一个函数的回调中调用彼此的函数。
-
除非另有说明,否则您不了解节点将异步执行所有操作。 nodejs.org/en/knowledge/getting-started/control-flow/…
标签: javascript node.js docker asynchronous async-await