第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用jQuery $ .getScript()方法包含多個js文件

如何使用jQuery $ .getScript()方法包含多個js文件

如何使用jQuery $ .getScript()方法包含多個js文件如何使用jQuery $ .getScript()方法包含多個js文件我試圖動態(tài)地將javascript文件包含到我的js文件中。我做了一些關(guān)于它的研究,發(fā)現(xiàn)jQuery $ .getScript()方法將是一個理想的方式。// jQuery$.getScript('/path/to/imported/script.js', function(){    // script is now loaded and executed.    // put your dependent JS here.    // what if the JS code is dependent on multiple JS files? });但我想知道這種方法是否可以一次加載多個腳本?為什么我問這是因為有時我的javascript文件依賴于多個js文件。先感謝您。
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

答案是

您可以使用promises getScript()并等待所有腳本都加載,例如:

$.when(
    $.getScript( "/mypath/myscript1.js" ),
    $.getScript( "/mypath/myscript2.js" ),
    $.getScript( "/mypath/myscript3.js" ),
    $.Deferred(function( deferred ){
        $( deferred.resolve );
    })).done(function(){

    //place your code here, the scripts are all loaded});

小提琴

ANOTHER FIDDLE

在上面的代碼中,添加一個Deferred并將其解析為內(nèi)部$()就像在jQuery調(diào)用中放置任何其他函數(shù)一樣$(func),就像它一樣

$(function() { func(); });

即它等待DOM準備就緒,因此在上面的例子中$.when等待加載所有腳本并且由于$.Deferred在DOM就緒回調(diào)中解析的調(diào)用而使DOM準備就緒。


對于更通用的用途,一個方便的功能

可以像這樣創(chuàng)建一個接受任何腳本數(shù)組的實用程序函數(shù):

$.getMultiScripts = function(arr, path) {
    var _arr = $.map(arr, function(scr) {
        return $.getScript( (path||"") + scr );
    });

    _arr.push($.Deferred(function( deferred ){
        $( deferred.resolve );
    }));

    return $.when.apply($, _arr);}

可以像這樣使用

var script_arr = [
    'myscript1.js', 
    'myscript2.js', 
    'myscript3.js'];$.getMultiScripts(script_arr, '/mypath/').done(function() {
    // all scripts loaded});

路徑將被添加到所有腳本的位置,并且也是可選的,這意味著如果數(shù)組包含完整的URL,那么也可以執(zhí)行此操作,并將所有路徑全部放在一起

$.getMultiScripts(script_arr).done(function() { ...

爭論,錯誤等

另外,請注意done回調(diào)將包含許多與傳入腳本匹配的參數(shù),每個參數(shù)表示包含響應(yīng)的數(shù)組

$.getMultiScripts(script_arr).done(function(response1, response2, response3) { ...

每個數(shù)組都包含類似的內(nèi)容[content_of_file_loaded, status, xhr_object]。我們通常不需要訪問這些參數(shù),因為無論如何都會自動加載腳本,并且大部分時間done回調(diào)都是我們真正知道所有腳本都已加載的,我只是為了完整而添加它,以及在需要訪問加載文件的實際文本或需要訪問每個XHR對象或類似內(nèi)容的極少數(shù)情況下。

此外,如果任何腳本無法加載,將調(diào)用失敗處理程序,并且不會加載后續(xù)腳本

$.getMultiScripts(script_arr).done(function() {

     // all done

}).fail(function(error) {

     // one or more scripts failed to load

}).always(function() {

     // always called, both on success and error

});


查看完整回答
反對 回復(fù) 2019-08-24
?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

您可以嘗試使用遞歸。這將一個接一個地同步下載它們,直到它完成下載整個列表。

var queue = ['url/links/go/here'];ProcessScripts(function() { // All done do what ever you want}, 0);function ProcessScripts(cb, index) {
    getScript(queue[index], function() {
        index++;
        if (index === queue.length) { // Reached the end
            cb();
        } else {
            return ProcessScripts(cb, index);
        }
    });}function getScript(script, callback) {
    $.getScript(script, function() {
        callback();
    });}


查看完整回答
反對 回復(fù) 2019-08-24
?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

以下是使用Maciej Sawicki的答案并實現(xiàn)Promise回調(diào):

function loadScripts(urls, path) {
    return new Promise(function(resolve) {
        urls.forEach(function(src, i) {

            let script = document.createElement('script');        
            script.type = 'text/javascript';
            script.src = (path || "") + src;
            script.async = false;

            // If last script, bind the callback event to resolve
            if(i == urls.length-1) {                    
                // Multiple binding for browser compatibility
                script.onreadystatechange = resolve;
                script.onload = resolve;
            }

            // Fire the loading
            document.body.appendChild(script);
        });
    });}

使用:

let JSDependencies = ["jquery.js",
                      "LibraryNeedingJquery.js",
                      "ParametersNeedingLibrary.js"];loadScripts(JSDependencies,'JavaScript/').then(taskNeedingParameters);

所有Javascript文件都會盡快下載并按給定順序執(zhí)行。然后taskNeedingParameters被叫。


查看完整回答
反對 回復(fù) 2019-08-24
  • 3 回答
  • 0 關(guān)注
  • 3118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號