2013-07-24 31 views
0

我是新來的角,在一個應用程序中,我正在編寫角度服務做REST API調用。AngularJS REST異步調用不返回數據

我在做什麼象下面這樣:

App.service('dataService', function(){ 
    this.getNewsAndTweets = function(){ 
     var newsCall = $http({ 
      method: 'GET', 
      url: '/api/news/' 
     }); 

     var tweetsCall = $http({ 
      method: 'GET', 
      url: '/api/tweets/' 
     }); 
     $q.all(newsCall, tweetsCall).then(function(values) { 
      var news = values[0].data.results; 
      var tweets = values[1].data.results; 
      var a = doSomeThing(news); 
      var b = doSomeThingToo(tweets); 
      return [a, b]; 
      }); 

     } 
} 

由於$q.all(newsCall, tweetsCall).then是一個異步調用,我得到空數組中的新聞的時候,我打電話給我的服務。

在我的控制器內部,我將它稱爲dataService.getNewsAndTweets(),並獲取null數組,只要我理解爲$ q是稍後返回數據的異步調用。

我該如何解決這個問題?

在此先感謝。

回答

1

,你必須在你的服務

return $q.all(newsCall, tweetsCall).then(function(values) { 
     var news = values[0].data.results; 
     var tweets = values[1].data.results; 
     var a = doSomeThing(news); 
     var b = doSomeThingToo(tweets); 
     return [a, b]; 
     }); 

返回承諾EN然後在你的控制器等待它來解決:

dataService.getNewsAndTweets().then(function(data){ 
    $scope.news = data[0]; 
    $scope.tweets = data[0]; 
});