Javascript angular js:如何一个接一个地调用多个异步http请求并存储响应以备将来使用?

Javascript angular js:如何一个接一个地调用多个异步http请求并存储响应以备将来使用?,javascript,angularjs,Javascript,Angularjs,请帮忙:((指) 我的mysql数据库中有一个存储avalabe图书时间的表 在我的网站上,有一些按钮,用户可以点击并获取相关的可用图书时间,您可以在所附图片中看到 每次用户点击左/右箭头,我都会触发一个工厂函数,然后我会得到一个数据,其中包含与那天相关的avalabe书籍,到目前为止一切正常 问题: 当用户第一次进入我的站点时,我会得到当前日期,并显示与当天(今天)相关的可用图书时间,当用户点击左/右箭头时,我会得到与三天后(今天)相关的可用图书。这也很好 但这是缓慢的 我希望,当用户进入我

请帮忙:((指)

我的mysql数据库中有一个存储avalabe图书时间的表

在我的网站上,有一些按钮,用户可以点击并获取相关的可用图书时间,您可以在所附图片中看到

每次用户点击左/右箭头,我都会触发一个工厂函数,然后我会得到一个数据,其中包含与那天相关的avalabe书籍,到目前为止一切正常

问题: 当用户第一次进入我的站点时,我会得到当前日期,并显示与当天(今天)相关的可用图书时间,当用户点击左/右箭头时,我会得到与三天后(今天)相关的可用图书。这也很好

但这是缓慢的

我希望,当用户进入我的网站,我得到的数据相关的今天,直到两个月后

但我只想显示今天(以及第二天和第二天)的avalabe书籍。因此,当用户单击左/右箭头时,我不必调用另一个http请求并强制用户等待,直到我的数据被avalabe看到

有没有一种方法可以定义一些异步http请求并存储回调成功数据,但在用户点击特殊键(在我的例子中是左/右箭头)之前不要使用它

以下是我在工厂中的http请求函数:

     app.factory('ShowBookingFacDrProfile',function($http){
         return{
             showbooking:function(scope){
                 $http.post("partials/search-drprofile/show_available_books.php",{today,nextday,next2day})// I just simplicized the object that I send here
                     .success(function(msg){
                       scope.booking=msg;;
                      //here I want to do something like this : 
                      then.post('sameURL',{next3day,next4day,next5day})
                     // I want to repeat this until 2 month later from today
                      then.post('sameURL',{next6day,next7day,next8day})

              }
         }
     });
相关控制人:

    $scope.hitArrow = function(current) {
    $scope.pager = current;
    SearchFac.search($scope);
};
我的控制器有什么特别之处吗

我知道我可以使用承诺!但是如何存储它们?在哪里?以后如何使用它们

我无法将它们存储在新的scope.booking中,例如:scope.booking2,因为这样我就无法正确使用它们:(


我无法使用缓存,因为avalabe books可能每分钟都在变化:(

我的看法是:

   <div class='col-xs-4'>
       <table class='table table-responsive' >
           <tr data-ng-repeat='v in booking |filter:{month:date.next2month} |filter:{day:date.next2day}'>
           <td><a>{{v.hour}}</a></td>
           </tr>
       </table>
   </div>

   <div class='col-xs-4'>
       <table class='table table-responsive' >
           <tr data-ng-repeat='v in booking |filter:{month:date.nextmonth} |filter:{day:date.nextday}'>
               <td><a>{{v.hour}}</a></td>
           </tr>
       </table>
   </div>

   <div class='col-xs-4'>
       <table class='table table-responsive' >
           <tr data-ng-repeat='v in booking |filter:{month:date.today} |filter:{day:date.today}'>
               <td><a>{{v.hour}}</a></td>
           </tr>
       </table>
   </div>

请看,然后按箭头
如果$scope.booking是一个数组,您将看到新的avalable book times进入视图的速度有多快。

如果$scope.booking是一个数组,您只需附加http响应的内容(array.push(object))。

“我无法使用缓存,因为avalabe books可能每分钟都在更改”。如果您每分钟获取一次可用的书籍,并将其存储在本地,这是否解决了这部分问题?事实上,我对缓存知之甚少:(但我认为在我的问题中,缓存不会有帮助,因为如果用户第一次进入我的网站,将不会有现金数据!我的问题仍然存在:请求速度慢:(也许你的工作应该在你的api中,按日期返回和数组,所以你只做一个(更大但唯一的)requestOhum,也许,我的后端是PHP,它的数据库非常简单,在一个页面中,我将向10名医生展示大量avalabe书籍,我该怎么做?:(同意@bto.rdz,如果性能有问题,请创建一个API端点,该端点可以获取尽可能多的数据,以便逻辑组合在一起。看起来您正在等待第一次调用完成,然后再开始第二次(非常类似)调用等。如果可能,请将这些调用合并为一个调用。我无法将新数据附加到预订中(顺便说一句,这是一个数组),因为我无法使用它,而ng repeat吸收了2000多个重复数据