我发现使用Promise.reject('text reason')抛出错误以跳过以下所有.then()并向用户提供正确的错误消息非常舒服。
如果存在真正的错误,则不会抛出这些拒绝 - 例如,如果用户想要更改是用户名,我会使用它们跳过thens - 如果已经使用了用户名,则拒绝承诺立即给他回报消息。
我发现这是不好的做法,你有替代方法吗?
短代码示例:
isBlacklisted
? Promise.reject('blacklisted')
: [more stuff...]
.catch(err => switch(err){
case 'blacklisted':
req.flash('error', t('blacklisted'))
})
编辑:我不想抛出真正的错误,因为它会垃圾邮件堆栈跟踪。
编辑:我的示例正常工作,但它总是抛出一个msg,如:“(节点:15764)警告:一个承诺被拒绝且出现非错误:[object String]”
编辑:我设法通过以下方式发出警告:
Promise.config({
warnings: false,
})
但我认为这仍然是不好的做法。你能解释一下为什么这是不好的做法,更好的是什么?
感谢。