直接返回promise中的对象

时间:2018-02-22 09:26:25

标签: javascript node.js es6-promise request-promise

为什么这段代码

app.post('/api/v1/subscribe', (req, res) => {
  lsq.services.get('subscribe')
    .then(service => {
      method: 'POST',
      uri: `http://${service}/api/v1/demo/subscribe`,
      json: req.body,
    })
    .then(rp)
});

抛出错误

 uri: `http://${service}/api/v1/demo/subscribe`,
    ^
SyntaxError: Unexpected token :

我的猜测是JS认为{是函数开括号,而不是对象打开括号。那么,我们不允许直接在promise中返回一个对象吗?

1 个答案:

答案 0 :(得分:2)

这与承诺完全无关,只与胖箭头函数语法的模糊性有关。问题是您返回的文字对象与函数体混淆。把它放在括号之间:

app.post('/api/v1/subscribe', (req, res) => {
  lsq.services.get('subscribe')
    .then(service => ({
      method: 'POST',
      uri: `http://${service}/api/v1/demo/subscribe`,
      json: req.body,
    }))
    .then(rp)
});