AngularJS REST异步调用不返回数据

时间:2013-07-24 22:54:55

标签: rest angularjs angular-services

我是角色的新手,在应用程序中我正在编写用于执行REST API调用的角度服务。

我正在做的事情如下:

    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是一个异步调用,当我调用我的服务时,我在新闻中获得了null数组。

在我的控制器中,我调用它像dataService.getNewsAndTweets()并获取空数组,据我所知,$ q是一个异步调用,后来会返回数据。

如何解决此问题?

提前致谢。

1 个答案:

答案 0 :(得分: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];  
        });

然后在您的控制器中等待它解决:

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