循环后的javascript回调

时间:2010-06-13 00:59:59

标签: javascript jquery

我刚刚开始创建一个新的Wordpress博客,我已经开始构建JavaScript基础了!

我遇到的问题是我有一个循环几个变量并包含所需JS库的函数,我需要做的是在循环完成时执行回调!

这是我的代码!

var Utilities = {
    Log : function(item)
    {
        if(console && typeof console.log == 'function')
        {
            //Chrome
            console.log(item);
        }
    },
    LoadLibraries : function(callback)
    {
        $.each(Wordpress.required,function(i,val){
            //Load the JS
            $.getScript(Wordpress.theme_root + '/js/plugins/' + val + '/' + val + '.js',function(){ //  %/js/plugins/%/%.js
                Utilities.Log('library Loaded: ' + val);
            });
        });
        callback();
    }
}

用法就是这样!

Utilities.LoadLibraries(function(){
    Utilities.Log('All loaded');
});

上面你看到callback()女巫的执行正在执行之前文件在dom中!我需要在每个库包含的末尾调用它!

1 个答案:

答案 0 :(得分:1)

$.getScript()是一个异步调用,因此您的javascript代码将继续执行,直到该调用完成。如您所知,$.getScript()还接受回调函数作为success参数,该参数将在异步调用完成时执行。您将不得不围绕该参数解决问题,可能是从数组中删除脚本,然后检查该数组是否为空。

    $.each(Wordpress.required,function(i,val){
        //Load the JS
        $.getScript(Wordpress.theme_root + '/js/plugins/' + val + '/' + val + '.js',function(){ //  %/js/plugins/%/%.js
            Utilities.Log('library Loaded: ' + val);

            // Remove the completed item
            delete WordPress.required[i];

            // If array is empty, all scripts loaded - execute callback!
            if (!Wordpress.required.length)
                callback();              
        });
    });