Javascript 如何使用Angular';新加坡元资源?

Javascript 如何使用Angular';新加坡元资源?,javascript,angularjs,rest,angular-resource,Javascript,Angularjs,Rest,Angular Resource,我一直在寻找一个关于如何使用Angular的$resource取消正在进行的REST调用的示例。我还没有找到任何解决方案,但从角度的文档中我得到的印象是,这应该是可能的 从文件中: 用法: $resource(url[,paramDefaults][,actions]) 文档中定义的操作之一: 超时–{number | Promise}–以毫秒为单位的超时,或在解析时应中止请求的承诺 是否有人提供了一个工作示例,说明如何使用此超时操作并承诺取消正在进行的请求?可能吗?是的,这是可能的。您必须创建

我一直在寻找一个关于如何使用Angular的$resource取消正在进行的REST调用的示例。我还没有找到任何解决方案,但从角度的文档中我得到的印象是,这应该是可能的

从文件中:

用法: $resource(url[,paramDefaults][,actions])

文档中定义的操作之一:

超时–{number | Promise}–以毫秒为单位的超时,或在解析时应中止请求的承诺


是否有人提供了一个工作示例,说明如何使用此超时操作并承诺取消正在进行的请求?可能吗?

是的,这是可能的。您必须创建延期并将承诺设置为参数:

var timeoutPromise = $q.defer();

{timeout: timeoutPromise.promise}
然后,您可以随时解决承诺:

timeoutPromise.resolve(); 
还可以调用
$timeout.cancel(timeoutPromise)
。什么应该等于
timeoutPromise.reject()

我的代码示例:

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  
}

}

谢谢您的快速回复。你给我指出了正确的方向。然而,我在应用我的$resource的超时时遇到了麻烦,它被放置在一个工厂中,可以多次使用。使用此模式时,超时配置似乎只能初始化一次。我解决这个问题的方法是将$resource移出服务并移入控制器,以便能够在每次调用rest服务时使用新的承诺设置超时。过了一会儿,我还决定从$resource更改为$http。