node.js - 如何从 Promise 中捕获错误(node js)
问题描述
let commandPromise = async (command) => {
try {
return new Promise((resolve, reject) => {
try {
child_process.exec(command, (error, stdout, stderr) => {
if (error) return reject(error);
if (stderr) return reject(stderr);
return resolve(stdout)
})
} catch (err) {
return reject(err)
}
})
} catch (err) {
throw err
}
};
这是在这种情况下捕获错误的正确方法还是存在更好的方法?代码似乎不太好。
解决方案
对于您的情况,如果您在 new Promise() 之前添加“等待”,一切都会起作用
let commandPromise = async (command) => {
try {
return await new Promise((resolve, reject) => {
try {
child_process.exec(command, (error, stdout, stderr) => {
if (error) return reject(error);
if (stderr) return reject(stderr);
return resolve(stdout)
})
} catch (err) {
return reject(err)
}
})
} catch (err) {
throw err
}
};