我在一个promise返回reject的时候,原本是直接返回一个普通对象:returnPromise.reject({status:response.status,statusText:response.statusText})但后来发现ESlint推荐将reject返回值包含在Error里(eslint(prefer-promise-reject-errors)),于是加上了Error:returnPromise.reject(newError({status:response.status,statusText:response.statusText}))问题来了,原本可以在catch里分析返回的status,现在作为Error对象的message打印出来是"[objectObject]",这怎么分析呢?难道只能传递个字符串,然后下游代码也跟着修改?求教
2 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
这样不就行了Promise.reject(`${response.status}-${response.statusText}`)catch(err){const[status,statusText]=err.split('-')//todo}

达令说
TA贡献1821条经验 获得超6个赞
这种问题,一定要学会先查文档,查不出来再提问。参考MDNError,Error的构造函数里message只能是字符串,你传什么都会转成字符串。另外Promise.reject()就会返回rejected的Promise实例,不需要在里面再传一个Error。
添加回答
举报
0/150
提交
取消