2016-03-01 72 views
0

我正在嘗試創建類似於this示例的服務。我的代碼如下:

app.service('Poller', function ($q, $http, $timeout) { 

var notification = {}; 
notification.poll = function (callback, error) { 
    return $http.get('https://someapi.com').then(function (response) { 
     if (typeof response.data === 'object') { 
      if (callback){ 
       callback(response.data); 
       console.log('tick'); 
      } 
     } else { 
      if (error) { 
       error(response.data); 
      } 
     } 
     $timeout(notification.poll, 10000); 
    }); 
} 

notification.poll(); 

return notification; 
}); 

我嘗試使用它在我的控制器是這樣的:

Poller.poll(
    function(jsonAPI) { 
     console.log(jsonAPI); 
    }, 
    function(error) { 
     console.log('Error:', error); 
    } 
);  

的數據是正確的,但獲取那裏似乎是兩個問題。

  1. 回調函數只被調用一次,而不是根據$超時。我在回調結束錯誤的服務中添加了條件,因爲沒有它們會引發錯誤callback is not a function。當我刷新或更改視圖時,再次調用回調函數。
  2. $超時似乎每10秒觸發兩次而不是一次。
+0

你爲什麼叫notification.poll()不帶參數? –

+0

我放入的兩個函數不是參數嗎?順便說一句,你的答案完美無缺。 –

回答

1

使用

$timeout(function() { 
    notification.poll(callback, error); 
}, 10000); 

,而不是

$timeout(notification.poll, 10000); 
相關問題