【问题标题】:Throwing errors without curly brackets in lambdas/arrow-functions [duplicate]在 lambdas/箭头函数中抛出没有大括号的错误 [重复]
【发布时间】:2018-12-06 20:51:45
【问题描述】:

假设我想在 NodeJs 中使用 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 时那样省略大括号?

【问题讨论】:

    标签: node.js lambda promise arrow-functions


    【解决方案1】:

    throw 是一个语句,所以你不能在需要表达式的地方使用它。没有大括号的箭头函数版本需要一个表达式。你可以返回一个被拒绝的 Promise 而不是抛出:

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

    【讨论】:

    • 是的,我知道这一点,但我不确定哪个更好。
    • @chriptus13 他们是一样的。 Promise 回调中抛出的异常只是使用此方法转换为被拒绝的 Promise。我喜欢throw 的语法稍微好一点,但不是单一的。
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 2016-12-08
    • 2017-05-22
    • 2018-04-25
    • 2020-10-11
    • 2016-05-28
    • 2017-12-13
    相关资源
    最近更新 更多