javascript中的承诺(ES6)
如何将承诺javascript中的承诺(ES6),javascript,ecmascript-6,passport.js,es6-promise,Javascript,Ecmascript 6,Passport.js,Es6 Promise,如何将承诺拒绝()错误从500更改为200,状态代码为ok 在某些情况下,当我试图拒绝时,前端总是会出现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(!us
拒绝()
错误从500更改为200,状态代码为ok
在某些情况下,当我试图拒绝时,前端总是会出现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);
});
}
错误:
状态代码:500内部服务器错误
如果您拒绝,则状态代码不应为200 OK,但如果您想这样做,
你需要在回复之前完成
这里,
500是一个HTTP错误,不是由您的承诺生成的,而是从您的服务器返回的 如果您希望避免500错误,最好的解决方案是找出在后端出现该错误的原因,并在后端进行修复,因为500通常意味着抛出了未捕获的异常 但是,如果您想假装一切正常,可以忽略代码中的500错误,并返回不是生成的错误的内容:
if (err)
reject(true);
然后在承诺的catch
块中,您可以:
login(...)
.catch(function(e) {
if (e === true)
// pretend everything is okay
else
...
})
您应该解决服务器代码中的500错误
login(...)
.catch(function(e) {
if (e === true)
// pretend everything is okay
else
...
})