[英]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.