AngularJS避免将多个$resource复制到同一URL

AngularJS避免将多个$resource复制到同一URL,angularjs,Angularjs,我有一些服务可以在多个控制器和工厂之间从服务器获取和共享数据提供者。当我加载页面时,一些工厂可以调用相同的服务函数来获取服务器数据。它生成对同一API资源的多个HTTP调用。我有一个最小的控件将API数据保存到变量中,转发调用使用这个数据。我希望避免这种情况。我可以做一个请求,其他数据请求等待完成第一个请求吗 实际实施示例: function getAllCategories() { var deferred = $q.defer(); if (categories

我有一些服务可以在多个控制器和工厂之间从服务器获取和共享数据提供者。当我加载页面时,一些工厂可以调用相同的服务函数来获取服务器数据。它生成对同一API资源的多个HTTP调用。我有一个最小的控件将API数据保存到变量中,转发调用使用这个数据。我希望避免这种情况。我可以做一个请求,其他数据请求等待完成第一个请求吗

实际实施示例:

function getAllCategories() {
       var deferred = $q.defer();

       if (categoriesInitialized == 1) {
           deferred.resolve(categories);
       }
       else {
           categoriesInitialized = 0;
           categoryApiMethods.getAll(function (result) {
               for (var i = 0; i < result.length; i++) {
                   if (!checkCategoryExists(result[i]))
                       categories.push(new categoryModel(result[i]));
               }
               categoriesInitialized = 1;

               deferred.resolve(categories);
           }, function (data, status, header, config) {
               //toaster.pop('error', data);
               deferred.reject(data, status, header, config);
           });
       }

       return deferred.promise;
   }
函数getAllCategories(){ var deferred=$q.deferred(); 如果(分类初始化==1){ 延迟。解决(类别); } 否则{ 类别初始化=0; categoryApiMethods.getAll(函数(结果){ 对于(变量i=0;i只需在逻辑中添加一个加载值,并保存一个待处理承诺数组,以便在加载完成时解决

function getAllCategories() {
   var deferred = $q.defer();

   if (!loading && categoriesInitialized == 1) {
       deferred.resolve(categories);
   }
   else if (!loading) {
       categoriesInitialized = 0;
       loading = true;
         categoryApiMethods.getAll(function (result) {
           for (var i = 0; i < result.length; i++) {
               if (!checkCategoryExists(result[i]))
                   categories.push(new categoryModel(result[i]));
           }
           categoriesInitialized = 1;
           loading = false;

           deferred.resolve(categories);
               waiting.forEach(function(promise) {
           promise.resolve(categories);
         }
       }, function (data, status, header, config) {
           //toaster.pop('error', data);
           deferred.reject(data, status, header, config);
waiting.forEach(function(promise) {
           promise.reject(....);
         }
       });
   } else {
      waiting.push(deferred.promise);
   }

   return deferred.promise;
   }
函数getAllCategories(){ var deferred=$q.deferred(); 如果(!加载和分类初始化==1){ 延迟。解决(类别); } 否则,如果(!正在加载){ 类别初始化=0; 加载=真; categoryApiMethods.getAll(函数(结果){ 对于(变量i=0;i感谢您提供的解决方案。我需要重写您的一些代码行。我编辑了您的解决方案以修复错误,并将更完整的解决方案放入。