Javascript 如何使用子进程承诺
我想要的是在stdout中命令生成的输出之后添加一些处理。最后,我想创建一个函数,如下所示:Javascript 如何使用子进程承诺,javascript,node.js,child-process,spawn,Javascript,Node.js,Child Process,Spawn,我想要的是在stdout中命令生成的输出之后添加一些处理。最后,我想创建一个函数,如下所示: var promise = require('child-process-promise').spawn; promise('some_command_producing_output') .then(function (result) { ... }) .catch(function (err) { ... }); 函数应该使用子进程
var promise = require('child-process-promise').spawn;
promise('some_command_producing_output')
.then(function (result) {
...
})
.catch(function (err) {
...
});
函数应该使用子进程promise中的promise,等待生成成功的结果并返回处理数据的promise。您可以通过
RunCommandAndProcess('some_command_producing_output')
.then(function (result) {
...
})
.catch(function (err) {
...
});
有关更多信息,请查看欢迎来到Stack Overflow@ScHoolboy 我建议您使用Node.js中的一个基本子流程模块,并通过以下方式自己承诺
var spawn = require('child-process-promise').spawn;
var promise = spawn('echo', ['hello']);
var childProcess = promise.childProcess;
console.log('[spawn] childProcess.pid: ', childProcess.pid);
childProcess.stdout.on('data', function (data) {
console.log('[spawn] stdout: ', data.toString());
});
childProcess.stderr.on('data', function (data) {
console.log('[spawn] stderr: ', data.toString());
});
promise.then(function () {
console.log('[spawn] done!');
})
.catch(function (err) {
console.error('[spawn] ERROR: ', err);
});
其中:
- cmd-命令,例如“echo”
- args:参数数组,例如[“Hello world”]
const spawn = require('child_process').spawn;
const spawnPromise = (cmd, args) => {
return new Promise((resolve, reject) => {
try {
const runCommand = spawn(cmd, args);
runCommand.stdout.on('data', data => resolve(data.toString()));
runCommand.on('error', err => {
throw new Error(err.message);
});
} catch (e) {
reject(e);
}
});
};
或
spawnPromise('ls', ['-la']).then(data => console.log('data: ', data));
const result = await spawnPromise('ls', ['-la']);