【问题标题】:Executing Multiple Ajax calls at same time while making all but one wait同时执行多个 Ajax 调用,同时让除一个等待之外的所有调用
【发布时间】:2017-08-03 20:44:21
【问题描述】:

所以我有一个页面同时进行多个 ajax 调用。每个 ajax 调用都与一个块/div 相关,其中包含已检索的数据,例如,假设有 5 个 div。呈现页面时,我希望一个主 div 完全加载并显示在其他 div/块之前。

例如。我有一个顶部有一般信息的页面,其他 div 是主 div 的一部分的更多详细信息。所以它们应该同时被调用,但我希望通用 div 先加载其所有内容,然后再允许更具体的 div 显示在屏幕上。

我希望所有调用都是异步的,但会以某种方式延迟其他调用的出现。这可能吗?

我知道 async: false 只会在调用 ajax 调用时延迟,但我需要同时调用它们。

有什么想法吗?请,谢谢。

【问题讨论】:

标签: javascript php jquery ajax


【解决方案1】:

你可以使用 setTimeout(foo, 3000);如果你需要等待一个特定的时间间隔,那么在那个时间间隔之后调用你的函数 foo() 来做你想做的事情

【讨论】:

    【解决方案2】:

    您可以在一般 div Ajax 调用成功时发出/调用其他 Ajax 调用。

    【讨论】:

      【解决方案3】:

      我想我是通过 Angular 实现的,在我的情况下,我需要在执行到其他进程之前查询所有状态。创建一个组合所有 ajax 请求的数组,然后使用 $q.all 等效于原生 javascript 的 Promise.all()

         getAllStatusResult() {
      
            let promises = [];
            let statusList = ['all','done','ongoing','cancelled'];
            let responseList = [];
            let date = new Date(), y = date.getFullYear(), m = date.getMonth();
            let deferred = $q.defer();
      
            statusList.map(status => {
              let payload = {
                start_date: "2017-1-1",
                end_date: formatDate(date),
                filter: { status }          
              }
              promises.push(ReportsService.getRevenues(payload).then((response) => {
                responseList.push({ name: status, total:response.data.total});
              }));
            });
      
      
            $q.all(promises).then(() => {
              deferred.resolve(responseList);
      
            }).then(response => {
              return response;
            });
            return deferred.promise;
      
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 2019-06-29
        • 1970-01-01
        • 2022-01-22
        相关资源
        最近更新 更多