中止服务调用,同时在angularjs中切换路由

时间:2016-12-12 16:04:36

标签: angularjs

问题陈述: 我正在使用3个标签。 tab-a,tab-b和tab-c。 每个选项卡将在文档加载时对web api进行5-6次服务调用。我的问题是,当我点击tab-a..calls from tab-a时,很快就会改变路线。但如果我同时点击tab-b,我之前的通话将会正在进行中,并且将从tab-b添加新的更多6个通话。我想在切换路径上中止来自tab-a的先前呼叫。因为它影响了我的Angular SPA的性能。

我正在使用角度js路由。

app.config(function ($routeProvider) {
$routeProvider
.when('/daily',
{
    title: 'Daily - Stats',
    templateUrl: '/SPA/Daily.html'
})
.when('/weekly',
{
    title: 'Weekly - Stats',
    templateUrl: '/SPA/Weekly.html'
})

我有一项服务来从web apis获取和发布数据。

1 个答案:

答案 0 :(得分:0)

你可以在$ routeprovider中使用Resolve(我还没有测试过代码) 像:

.when('/daily',
{
title: 'Daily - Stats',
templateUrl: '/SPA/Daily.html',
resolve: {
   foo: function($http){
      $http.pendingRequests.forEach(function (pendingReq) {
      //here cancel pendingReq like pendingReq.resolve()
   }
}

或您可以使用RoutechangeStart。

您还可以在此帖中找到更多内容: AngularJS abort all pending $http requests on route change