Javascript 在任意一组jQuery函数完成后获取通知

Javascript 在任意一组jQuery函数完成后获取通知,javascript,jquery,jquery-ui,jquery-deferred,Javascript,Jquery,Jquery Ui,Jquery Deferred,我有一个页面运行一个非常大的设置脚本,其中一部分依赖于jQuery和jQueryUI的第三方扩展(特别是,&)以及一套内部脚本。在使用jQueryUI的选项卡、数据表重组和表分页以及基金会在$(document).ready()之后应用样式之间,有一个难看的时间段,根据设备的不同,在1到4秒之间,页面明显地被重新排列 我想通过在所有东西前面保留一个加载屏幕来隐藏它,直到它完成,但我不确定如何检测完成。总的来说,我知道我需要下面这样的东西(很抱歉,我没有逐字记录代码,但它太大了,没有帮助,这种通用

我有一个页面运行一个非常大的设置脚本,其中一部分依赖于jQuery和jQueryUI的第三方扩展(特别是,&)以及一套内部脚本。在使用jQueryUI的选项卡、数据表重组和表分页以及基金会在
$(document).ready()
之后应用样式之间,有一个难看的时间段,根据设备的不同,在1到4秒之间,页面明显地被重新排列

我想通过在所有东西前面保留一个加载屏幕来隐藏它,直到它完成,但我不确定如何检测完成。总的来说,我知道我需要下面这样的东西(很抱歉,我没有逐字记录代码,但它太大了,没有帮助,这种通用形式应该足够了):

我的感觉是,这就是jQuery的延迟对象的用途,但经过几个小时和几个教程、StackOverflow问题等,我不知道如何使用它们来实现所描述的目的。因此,基于jQuery的解决方案是理想的,但不是必需的

更新:我(仍然失败)尝试从@DavidTansey实现以下解决方案:

$(document).ready( function() {
    var rendering = function () {
            var deferred = $.Deferred();
            deferred.resolve({
                InHouseLibrary: function() {
                    InHouseLibrary.init();
                 }, 
                Foundation: function() {
                  $(document).foundation();
                }
            });
            return deferred.promise();
    }

    rendering().done(function(status) {
        /* this is still reached well in advance of completing
           post-document-ready rendering */
        console.log(status);
    });
});

如果我理解正确的话,这不起作用的原因是
deferred.resolve()。我需要的是一种方法来知道他们进行的呈现何时完成,即DataTables何时完成了对初始化表的所有行的更改,或者jQueryUI何时完成了将页面重新组织为选项卡等。

您是否以本文为例:@humble.rumble问题在于这不是AJAX问题,这实际上只是一个执行速度有多快的问题;DataTables需要重新组织成百上千行,jQueryUI需要创建选项卡,等等。-渲染需要时间,而不是等待服务器的回复。@DavidTansey我已经多次尝试过类似的方法,但对我来说,问题是没有回调来告诉我渲染何时完成,不清楚我在推迟什么;我将在上面添加我解释此解决方案的最佳尝试
$(document).ready( function() {
    var rendering = function () {
            var deferred = $.Deferred();
            deferred.resolve({
                InHouseLibrary: function() {
                    InHouseLibrary.init();
                 }, 
                Foundation: function() {
                  $(document).foundation();
                }
            });
            return deferred.promise();
    }

    rendering().done(function(status) {
        /* this is still reached well in advance of completing
           post-document-ready rendering */
        console.log(status);
    });
});