最初,我收到 UnhandledPromiseRejectionWarning: TypeError: Cannot read property "distance"of undefined。为了解决这个错误,我添加了一个带有拒绝的 if 条件。现在收到这个错误 UnhandledPromiseRejectionWarning:未处理的 promise 拒绝。此错误的根源是在没有 catch block 的情况下抛出异步函数内部,或者拒绝未使用 .catch() 处理的 Promise。 (拒绝 ID:1)。有什么解决办法吗? 这是我的代码
export function fun1(): Promise < survayResult > {
return new Promise((resolve, reject) => {
//..........
//..........
surveyDistance.forEach((result) => {
//
})
if(condition) {
reject(new Error("something went erong"));
return
}
let totalDistance = surveyDistance[0].distance;
// ...
//...
resolve("with some data");
})
}
最佳答案
我认为你想得太多了, promise 应该解决
或拒绝
,它们没有内置的错误处理支持。然而,在这种情况下,错误消息可能是一件好事,因为它告诉您参数 (surveyDistance
) 不是您所期望的。我不会评论好的或坏的做法,因为我不知道您的代码库,但您应该犹豫是否使用 try/catch,除非确实存在可能出错的地方(根据我的经验)。
export function fun1(): Promise < survayResult > {
return new Promise((resolve, reject) => {
try {
//..........
//..........
surveyDistance.forEach((result) => {
//
})
if(condition) {
reject(new Error("something went erong"));
return
}
let totalDistance = surveyDistance[0].distance;
// ...
//...
resolve("with some data");
} catch (e) {
reject("Your error message:" + e);
}
})
}
关于node.js - 如何在返回 Promise 的同时添加 catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60558324/