Promise.reject()的替代方法,用于处理非错误消息

时间:2017-06-27 16:04:10

标签: javascript es6-promise

我发现使用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,
})

但我认为这仍然是不好的做法。你能解释一下为什么这是不好的做法,更好的是什么?

感谢。

0 个答案:

没有答案