我正在并行调用4到10 $ http get呼叫。但是在用户搜索操作之后,我需要显示到相同的视图,但结果不同。我填充了数据集和新的$ http查询调用。但是以前的$ http调用(承诺)仍在填充或起作用,影响$ scope。
我可能的肮脏解决方案是..
使用multi- app(multimodule)页面,该页面可以具有由动态应用程序控制的动态区域。在用户事件上,删除与事件对应的元素。例如,搜索结果,如果我想使用不同的$ http调用显示来自不同来源的结果。如果用户使用new关键字搜索,我将删除结果ng-app元素并引导新元素。
您应该使用版本1.1.5,该版本可以取消$ http请求:
https://github.com/angular/angular.js/blob/master/CHANGELOG.md
// set up a dummy canceler var canceler = $q.defer(); // use it as a timeout canceler for the request $http({method: 'GET', url: '/some', timeout: canceler.promise}).success( function (data) { alert("this won't be displayed on cancel"); } ).error( function (data) { alert("this will be displayed on cancel"); } ) // now, cancel it (before it may come back with data) $rootScope.$apply(function() { canceler.resolve(); });
您可以对所有请求使用相同的取消器,并在开始新设置之前对其进行解决。