直接返回承诺中的对象
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)
});
为什么会出现这段代码
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)
});