2014-02-21 34 views
0

我正在開發一個使用angularjs的項目。我正在使用ngResource進行Web服務調用。在我的應用程序中,有一個每30秒運行一次的Web服務調用。現在我面臨的一個問題是,在某些情況下,用戶操作調用的Web服務和自動運行的Web服務會相互衝突。我想避免它。我該怎麼做?Angularjs ngResource多個Web服務調用衝突

setInterval(function() { 
         $scope.getAllReports(); 
        } 
        }, 30000); 



reportService.factory('Reports', function ($resource, AppSettings) { 
    return $resource(AppSettings.api_url + 'reports/:reportId', { 
     reportId: '@reportId' 
    }, { 
     getReports: { 
      method: 'POST' 
     } 

    }); 
}); 

請檢查演示

http://jsfiddle.net/Kn3Tc/79/

回答

0

首先,你應該考慮使用$interval(角對window.setInterval包裝)

它可確保任何更改範圍將體現在其他地方。

在你的控制器,你也可以在每次用戶手動點擊按鈕,以避免衝突(如果我理解你想要正確的)時間重置間隔:

var interval; 
function startInterval() { 
interval = $interval(function() { 
     $scope.results = myService.get(); 
    }, 30000); 
} 

    $scope.advanceSearch = function() { 
     $scope.results = myService.get(); 
     $interval.cancel(interval); 
     startInterval(); 
    }; 
    startInterval(); 

而且不要忘了加$間隔作爲依賴。

鏈接:http://plnkr.co/edit/AuLJjiSLsscimvZC5Spi