我遇到了一个问题,出于某种原因,我的api服务器的$ http帖子正在浏览器级别取消,这会错误地触发我的错误处理程序逻辑。我拖尾服务器日志,我可以验证服务器实际上是在接收请求并返回200状态代码 - 一切都很好。
似乎某些事情导致请求取消 mid-request !在xhr.abort
的Angular源代码中设置断点(使用Chrome浏览器的Web检查器)永远不会被命中,尽管在Safari中尝试这一点会导致相同的行为。
我只能看到chrome中的临时标题,其中请求被标记为已取消。在Safari中,请求继续"旋转" ,就像它仍处于活动状态一样(在错误处理程序内部打破)。
我可以在这里发布我的代码,但它非常香草,而且我不相信这个问题就在这里:
Service.validate(token, email)
.then(function(response){
if (!response.data.is_valid) {
// Do a thing
}
}).catch(function(err){
// Do a thing
});
Service.validate = function(token, email) {
return $http.post(configs.apiUrl + '/validate', {
email: email,
token: token
});
};
如果我能提供任何其他信息可以提供更多有关问题的信息,请告诉我。谢谢!
答案 0 :(得分:1)
我实际上只是在Angular中构建了一个api前端,而我从服务中获取$ http的唯一方法是返回一个promise。
Service.validate = function(token, email) {
return new Promise(
function(resolve, reject) {
$http
.post(configs.apiUrl + '/validate', {
email: email,
token: token
})
.then(
function success(response) {
resolve(response.data);
},
function error(err) {
reject(err);
});
});
}
然后在控制器中代码应该是相同的。
这似乎也符合ES6标准。