这就是我渲染仪表板的方式。
根据角色和权限加载允许的窗口小部件名称。现在,我有一个函数名列表如下。
var widgetnames = [' widget1',' widget2',' widget3'];
已经定义了执行所有小部件的功能。
function widget1(){ $.ajax(...); }
function widget2(){ $.ajax(...); }
function widget3(){ $.ajax(...); }
从数组中执行widgetnames
,如下所示。
$。each(widgetnames,function(index,fn){ if($ .isFunction(window [fn])){windowfn; } });
SYNCHRONOUS AJAX
次调用
问题
此处UI元素冻结,直到执行widgetnames
中的所有功能。有没有可能的解决方案?由于某些原因,无法采用异步AJAX调用。
答案 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
});