在AngularJS中,如何在查询更改时停止正在进行的$http调用

在AngularJS中,如何在查询更改时停止正在进行的$http调用,http,angularjs,routing,Http,Angularjs,Routing,我正在同时调用4到10美元的http get调用。但在用户搜索操作之后,我需要显示相同的视图,但结果不同。我填充数据集和新的$http查询调用。但是之前的$http调用(承诺)仍然在填充或运行,影响$scope 我可能的解决办法是 使用可由动态应用程序控制的动态区域的多应用程序(多模块)页面。在用户事件上删除与事件对应的元素。例如,搜索结果,如果我想使用不同的$http调用显示来自不同来源的结果。如果用户使用new关键字搜索,我将删除result ng app元素和bootstrap新元素。您应

我正在同时调用4到10美元的http get调用。但在用户搜索操作之后,我需要显示相同的视图,但结果不同。我填充数据集和新的$http查询调用。但是之前的$http调用(承诺)仍然在填充或运行,影响$scope

我可能的解决办法是


使用可由动态应用程序控制的动态区域的多应用程序(多模块)页面。在用户事件上删除与事件对应的元素。例如,搜索结果,如果我想使用不同的$http调用显示来自不同来源的结果。如果用户使用new关键字搜索,我将删除result ng app元素和bootstrap新元素。

您应该使用1.1.5版,它可以取消$http请求:

//设置虚拟取消器
var canceler=$q.defer();
//将其用作请求的超时取消器
$http({method'GET',url:'/some',超时:canceler.promise})。成功(
函数(数据){alert(“取消时不会显示此消息”);}
).错误(
函数(数据){alert(“这将在取消时显示”);}
)
//现在,取消它(在它返回数据之前)
$rootScope.$apply(函数(){
conceller.resolve();
});

您可以对所有请求使用相同的取消器,并在开始新设置之前解决它。

这正是我要找的。谢谢你的更新。我也是-1.1.5变更日志的链接有可重用的模式吗?我还想取消获取结果后发生的处理。您可以全局修饰
$http
,并始终添加一个取消器。请参阅以下要点以获取示例:@rewrited是否会在您有多个并发请求时立即失败?您在装饰器的底部设置了
canceler
,但是
$http
是一个服务,只创建一次。这将表明一个
取消器
对从中访问
$http
的所有位置都可见-取消一个请求将取消它们