如何使用 Angular 的$resource取消正在进行的 REST 调用?



我一直在一遍又一遍地寻找如何使用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

最新更新