0

我是 Angular 新手,在一个应用程序中我正在编写 Angular 服务来进行 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异步调用一样,当我调用我的服务时,我在新闻中得到空数组。

在我的控制器内部,我将其称为dataService.getNewsAndTweets()并获取空数组,据我所知 $q 是一个异步调用,稍后将返回数据。

我该如何解决这个问题?

提前致谢。

4

1 回答 1

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];
});
于 2013-07-24T23:05:44.227 回答