javascript - 如何处理异步/等待格式的回调函数的多个参数?
问题描述
在 shelljs 中,exec 函数在 callback 中有 3 个参数(err, stdout, stderr)
。在async/await
by中使用它时promisify(shelljs.exec)
,我无法捕捉到stderr
?
const { promisify } = require('util'),
shellExec = promisify(shelljs.exec);
....
// in the function
try {
variableName = await shellExec('some valid shell command', {});
return variableName;
}
catch (err) {
console.log(err);
}
如果 shelljs exec 返回代码 0 即有效响应,它工作正常,但是当命令无效时,它返回 1。
我无法获得stderr
.
解决方案
我假设您希望在使用 async/await 的同时输出 stderr 的值。像这样的东西可能有用:
var shelljs = require('shelljs');
async function promiseExec(input) {
return new Promise((resolve, reject) => {
let { err, stdout, stderr } = shelljs.exec(input);
shelljs.exit(1);
if(stdout === "") reject(stderr);
resolve(stdout);
})
}
async function main () {
let result = await promiseExec('dir');
console.log(result);
}
main();
推荐阅读
- python - Django 使用旧目录填充新项目
- javascript - 如何使用 Puppeteer 检查元素是否存在于异步/等待中
- javascript - 尝试创建 instagram 机器人,但不断收到语法错误?
- java - Android:如何将高度设置为 wrap_content?
- c# - 如何将此 VB.net 函数转换为 C#?
- c# - 如何将我的连接字符串表单保存到应用程序配置文件?
- python - Python 请求 / urllib / selenium 不解析整个网页 HTML
- html - 当字段为空时,如何在输入字段内显示字体真棒图标?
- java - Spring Integration DSL 自定义错误通道问题与 Executor
- jenkins - 需要配置可应用于构建日志中每一行的正则表达式,以将构建描述设置为詹金斯管道脚本