Angularjs 延迟对象在通过$http加载数据时返回错误的结果

Angularjs 延迟对象在通过$http加载数据时返回错误的结果,angularjs,deferred,Angularjs,Deferred,我有一个工厂,可以使用Angularjs中的$http和$q从文件中加载json数据 App.factory('dataLoader', ['$http', '$q', function($http, $q){ var deferred = $q.defer(), data = {}; return function (url){ data = $http.get(url) .suc

我有一个工厂,可以使用Angularjs中的
$http
$q
从文件中加载
json
数据

App.factory('dataLoader', ['$http', '$q', function($http, $q){
        var deferred = $q.defer(),
            data = {};

        return function (url){
            data = $http.get(url)
                .success(function(response){
                  deferred.resolve(response);
                })
                .error(function(){
                  deferred.reject('could not load template');
                });
            return deferred.promise;
        }

    }]);
问题:无论我在哪里使用此工厂加载数据,它都只返回第一个使用结果。例如:

正在加载文件1:

dataLoader('json-folder/file-one.json').then(function(data){
        console.log('result1: ', data);
    });
正在加载文件2:

dataLoader('json-folder/file-two.json').then(function(data){
        console.log('result2: ', data);
    });

在控制台中,我只有file-one.json的内容,这两个文件都是。如何修复dataLoader工厂?

承诺只能解决一次。此外,angular服务是单例服务,因此您对整个应用程序都有相同的承诺

尝试在返回的函数中创建承诺