关于node.js:在lambdas / arrow-functions中抛出没有花括号的错误

Throwing errors without curly brackets in lambdas/arrow-functions

本问题已经有最佳答案,请猛点这里访问。

假设我想在nodejs中使用承诺时转换一个错误。

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

1
2
3
4
5
6
7
8
9
const options = {
  'uri': uri,
  'headers': { 'Accept-Charset': 'utf-8' }
}

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

我是否可以像使用return时那样省略花括号?


throw是一个语句,因此不能在需要表达式的地方使用它。没有大括号的箭头函数版本需要表达式。你可以退回一个被拒绝的承诺,而不是放弃:

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