[英]promises in javascript ( ES6 )
如何将状态代码为ok的Promise reject()
错误从500更改为200?
在某些情况下,当我尝试拒绝时,总是会在前端收到500错误。
export default function login(req, res) {
return new Promise((resolve, reject) => {
passport.authenticate( 'local', function authenticate(err, user, info){
if(err) reject(err);
if(!user) reject(info);
req.logIn(user, err, info => {
if(err) { reject(err) }
else {
resolve(user);
}
})
})(req, res);
});
}
错误: Status Code:500 Internal Server Error
500是一个HTTP错误,不是由您的诺言产生的,而是从服务器返回的错误。
如果要避免500错误,最好的解决方案是弄清楚为什么在后端收到该错误并在此修复,因为500通常表示抛出了未捕获的异常。
但是,如果您要假装一切正常,则可以忽略代码中的500错误,并返回不是生成的错误的内容:
if (err)
reject(true);
然后,在Promise的catch
块中,您可以:
login(...)
.catch(function(e) {
if (e === true)
// pretend everything is okay
else
...
})
如果您拒绝,则状态代码不应为200 OK,但是如果您要这样做,则需要在发送回响应之前进行操作,
这里,
res.status(200).send('Something broke!');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.