【小白成长记】new Error()传递对象数据

new Error()需要传递对象数据时遇到的小问题,简单记录如下。

如下图代码:单个Promise里,表单校验未通过处理为 reject,同时需要将 表单以及未校验通过的错误信息传递以便后续进行处理。经过测试,发现reject只能传递一个参数,所以将 formItem 与 fields 包裹到一个对象中进行传递:

在这里插入图片描述

但这样写代码时,提交时校验拦截住了:提示Proimse中的reject期望传递一个Error

在这里插入图片描述
怎么办?
首先尝试将传递的对象放到 new Error() 里,但后面取不出来了,成了[Object object];然后尝试用 JSON.stringify 和 JSON.parse 转换,发现 JSON.parse 时会报错,显然这种方法也不行。

这时候就需要求助了:

在这里插入图片描述

代码如下:

function createErrorWithObject(errorObj) {
  // 将对象转换为字符串
  const errorObjString = JSON.stringify(errorObj);
  // 创建Error对象,并将对象字符串作为错误信息
  const error = new Error(errorObjString);
  // 扩展Error对象,添加一个名为data的属性,其值为原始对象
  error.data = errorObj;
  return error;
}
 
// 使用示例
const myObject = { message: "这是一个对象", code: 42 };
const error = createErrorWithObject(myObject);
 
console.log(error.message); // 输出对象的字符串表示
console.log(error.data);    // 输出原始对象

测试以上代码准确有效。

按照这个思路,最开始项目中的代码修改成了如下:

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值