我需要每3秒以角度1.3輪詢API。我需要運行的方法是:使用Angular 1.3中的工廠或服務反覆輪詢API
$scope.getCurrentConversation = function(){
CommonServices.getAllConversations($scope.api_key)
.then(function(_data) {
$scope.conversations = _data.data;
});
}
以下消息在CommonServices.getCurrentConversation中定義。如果這看起來很奇怪,我會這樣做來整合用於多個控制器的「公共服務」。它只是返回一個承諾,更新$ scope變量以重新填充顯示數據的DOM vi ng-repeat。
getCurrentConversation: function(api_key, conversation_id){
return $http({
url: '/api/v1/conversations/' + conversation_id,
method: "GET",
headers: { 'X-API-TOKEN': api_key },
data: ''
})
}
這些功能工作正常,但我需要調用的第一個每3秒,我不確定某個工廠或服務是否會比建立某種形式的計時器循環在主動控制一個更好的方法並按原樣發射。任何建議將不勝感激。
謝謝!
更新:我意識到輪詢不是一個最佳的解決方案,websockets等可能是一個更好的方式去,但我還沒有與他們嘗試過,我不知道如何強大的連接將爲移動客戶端等任何關於整體方法的信息,鏈接等也將被讚賞。
我現在不是這個問題的目的,但每2-3s請求一次Webservice可能不是一個可行的解決方案。您可能需要重新考慮您的數據檢索邏輯策略。 您可能會看到SocketIO允許在服務器和客戶端之間啓動會話,然後在修改服務器時,您可以通知客戶端觸發Get。 關於你的文件的體系結構,我想你可能會看看模式:** API網關**。它可以幫助您在現有的實現中進行搜索。 而對於你的問題,服務會更好。 – SamiX
我希望你不想把「每3秒」的部分放入服務或工廠。它感覺*實現*特定(與本服務交談的每件事物是否都需要每3秒處理一次新數據的相同負擔?)我期望'$ timeout($ scope.getCurrentConversation,3000);'最後的控制器就足夠了。雖然其他人可能會不同意... – DRobinson