我一直在一遍又一遍地寻找如何使用Angular的$资源取消正在进行的REST通话的示例。我还没有找到任何解决方案,但是从角度文档中,我得到了应该有可能的印象。
来自文档:
用法:$ resource(url [,paramdefaults] [,actions]);
文档中定义的动作之一:
超时 - {number | Promise} - 毫秒级的超时,或者答应解决时应中止请求。
有人有一个工作示例,显示如何使用此超时操作并承诺取消持续的请求?有可能吗?
我的代码示例:
var canceler = {};
$scope.doSomething = function() {
canceler = $q.defer();
$http.post('url', data, {timeout: canceler.promise}).
success(function(data) {
}).
error(function() {
});
};
function cancelPost() {
canceler.resolve(); //aborts request
}
}
是的,这是可能的。您必须创建一个fefere并将承诺设置为参数:
var timeoutPromise = $q.defer();
{timeout: timeoutPromise.promise}
然后您可以随时解决承诺:
timeoutPromise.resolve();
也应该可以致电$timeout.cancel(timeoutPromise)
。什么应该等于timeoutPromise.reject()
。
$ timeout $ q