如何在返回承诺时添加捕获量

问题描述 投票:0回答:1

最初,我得到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");
        })
    }
node.js promise try-catch
1个回答
0
投票

[我认为您考虑得太多了,诺言应该是resolvereject,因为它们没有内置的错误处理支持。但是,在这种情况下,错误消息可能是一件好事,因为它告诉您参数(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);
    }
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.