Загрузите несколько файлов JS в указанном порядке, используя метод jQuery $ .getScript (). - PullRequest
0 голосов
/ 13 февраля 2020

Сначала я загрузил jQuery и попытался загрузить некоторые js файлы, используя следующий метод

Примечание: " daterangepicker. js" требуют " момент. js"

$.when(
    $.getScript("https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"),
    $.getScript("https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.js"),
    $.getScript("1.js"),
    $.getScript("2.js"),
    $.getScript("3.js"),
    $.Deferred(function(deferred) {
        $(deferred.resolve);
    })
).done(function() {
    $('input[name=\'time\']').daterangepicker();
});

Но я получил ошибку

Uncaught TypeError: момент не является функцией

enter image description here

Затем я попробовал второй метод.

$.when(
    $.getScript("https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js").done(function() {
        $.getScript("https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.js").done(function() {
            alert("scripts loaded");
        });
    }),
    $.getScript("1.js"),
    $.getScript("2.js"),
    $.getScript("3.js"),
    $.Deferred(function(deferred) {
        $(deferred.resolve);
    })
).done(function() {
    alert("All js files are loaded");
    $('input[name=\'time\']').daterangepicker();
});

На этот раз я получил

daterangepicker не является функцией

enter image description here

Поскольку " Все js файлы загружены" предупреждение идет первым & «загружены скрипты» предупреждение идет вторым.

1 Ответ

0 голосов
/ 13 февраля 2020

Я реализовал новый лог c

function getScripts(scripts, callback, i) {
    i = i ? i : 0;
    $.getScript(scripts[i]).done(function() {
        ++i === scripts.length ? callback() : getScripts(scripts, callback, i);
    });
}

getScripts(
    [
        "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js",
        "https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.js",
        "1.js",
        "2.js",
        "3.js"
    ],
    function() {
        alert("all files are loaded");
        $('input[name=\'time\']').daterangepicker();
    });

Он работает как положено.

...