所以我最近实现了一种通过传入和解析promise来通过timeout属性取消$ http请求的方法。
当请求中止时,$ http promise将转到错误块。这一切都很好,在完成所有处理之后我收到来自angular.js的错误(xdomain.js在调用堆栈中),声明它“无法读取null的属性'statusText'”。空是xhr对象。
当请求被成功取消时,我目前处于亏损状态,但似乎xhr对象在调用xhr.onload()之后就被销毁了。
以下是我取消请求的示例:
var request = {
url: 'someurl',
method: 'get',
headers: headers
timeout: canceller // this is a promise that I resolve in a controller in order to abort an $http request. This works fine.
}
$http(request).then(function () {
//success block
}, function () {
// error block
});
正如我所说的那样,它进入了错误块,但它不在该块内部引发角度错误,而是似乎是请求返回并且不再有xhr对象等待它发生错误。
答案 0 :(得分:1)
这是Angular和Xdomain的常见问题。我喜欢的解决方法是在提交请求时传递唯一标识符或bool。如果在请求完成时值已更改,则忽略结果。