最初,我得到UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“距离”。为了解决该错误,我添加了带有if条件的if条件。现在得到这个错误UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了未使用.catch()处理的诺言而引起的。 (拒绝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");
})
}
[我认为您考虑得太多了,诺言应该是resolve
或reject
,因为它们没有内置的错误处理支持。但是,在这种情况下,错误消息可能是一件好事,因为它告诉您参数(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);
}
})
}