javascript axios返回测试结果

am46iovg  于 2023-02-11  发布在  Java
关注(0)|答案(3)|浏览(109)

我正在测试axios错误的结果,如下所示:

.catch((error) => {
                if (!error.response || !error.response.data || !error.response.data[0] || !error.response.data[0].err_code) {
                    reject(999);
                } else {
                    reject(error.response.data[0].err_code);
                }
            });

有时错误对象包含所有的error.response.data[0]段,有时不包含。有没有什么方法可以像我的例子一样测试error.response.data[0]段的存在性,但又不那么冗长?

zphenhs4

zphenhs41#

您可以使用“&&”运算符来简化测试:

.catch((error) => {
reject(error.response && error.response.data && error.response.data[0] && error.response.data[0].err_code || 999);
});

这样,如果任何段
错误响应数据[0]错误代码
为falsy,则表达式将返回999。

gzjq41n4

gzjq41n42#

我已经找到了解决方案,很适合我。我使用所谓的“可选链接”(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining),感谢Berk Korkcuoglu。以下是我的代码:

.catch((error) => {
                if (!error?.response?.data?.[0]?.err_code) {
                    reject(999);
                } else {
                    reject(error.response.data[0].err_code);
                }
            });
cuxqih21

cuxqih213#

稍微紧凑一点的是:

.catch((error) => {
           reject(error?.response?.data?.[0]?.err_code || 999);
        });

相关问题