直接返回承诺中的对象

Directly returning an object in a 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 将 { 视为函数左大括号,而不是对象左大括号。那么,我们是否不允许直接 return promise 中的对象?

这与 promises 完全无关,只与粗箭头函数语法的歧义有关。问题是您 return 将文字对象与函数体混淆了。把它放在括号之间:

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)
});