来自数组的多个ajax调用,不会阻止UI

时间:2016-01-20 05:48:03

标签: php ajax

这就是我渲染仪表板的方式。

  1. 根据角色和权限加载允许的窗口小部件名称。现在,我有一个函数名列表如下。

    var widgetnames = [' widget1',' widget2',' widget3'];

  2. 已经定义了执行所有小部件的功能。

    function widget1(){ $.ajax(...); }
    function widget2(){ $.ajax(...); } 
    function widget3(){ $.ajax(...); }
    
    1. 从数组中执行widgetnames,如下所示。

      $。each(widgetnames,function(index,fn){   if($ .isFunction(window [fn])){windowfn; } });

    2. SYNCHRONOUS AJAX次调用

      可顺利运行

      问题

      此处UI元素冻结,直到执行widgetnames中的所有功能。有没有可能的解决方案?由于某些原因,无法采用异步AJAX调用。

1 个答案:

答案 0 :(得分:0)

您可以使用一些延迟/承诺操作来提供帮助。

在这个简单的用例中,您可以使用jQuery的$ .when()方法,该方法列出了这些" Deferred"对象(所有jQuery Ajax方法返回Deferred对象),然后提供单个回调。

$.when(

  // Deferred object (probably Ajax request),

  // Deferred object (probably Ajax request),

  // Deferred object (probably Ajax request)

).then(function() {

  // All have been resolved (or rejected), do your thing

});