Lambdas /箭头功能中没有大括号的抛出错误

时间:2018-12-06 20:51:45

标签: node.js lambda promise arrow-functions

假设我想在NodeJ中使用promise时转换一个错误。

例如,在下面的代码中使用request-promise模块,当我为某个URI制作GET时,我试图将错误修改为更简单的错误。

const options = {
  'uri': uri,
  'headers': { 'Accept-Charset': 'utf-8' }
}

rp.get(options)
  .catch(err => {
    throw {'statusCode': err.statusCode ? err.statusCode : 503}
  })

无论如何,像使用return一样,我是否可以省略花括号?

1 个答案:

答案 0 :(得分:1)

throw是一条语句,因此不能在需要表达式的地方使用它。没有花括号的箭头功能版本需要一个表达式。您可以返回被拒绝的Promise而不是抛出:

rp.get(options)
  .catch(err => Promise.reject({'statusCode': err.statusCode ? err.statusCode : 503}));