Показать сообщение отдельно
  #10 (permalink)  
Старый 27.05.2022, 22:12
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 93

Сообщение от Rise
Чтобы освободить память
Понял, спасибо! Вот что получилось изобразить
async function manager(params) {
    params = typeof params === 'object' ? params : {};
    element = params.element;
    url = params.url;
    loadCss(url, ['icons', 'style', 'dropzone'])
    await loadScript(url + '/helper/Helper.js')
    let helper = new Helper({ element: element });
    document.getElementById(element).insertAdjacentHTML('beforeend', helper.html())
}

function loadCss(url, style) {
    let head = document.getElementsByTagName('head')[0]
    style.forEach(file => {
        let cssLink = document.createElement('link')
        cssLink.href = url + '/css/' + file + '.css'
        cssLink.type = 'text/css'
        cssLink.rel = 'stylesheet'
        head.appendChild(cssLink);
    });
}

function loadScript(url) {
    return new Promise((resolve, reject) => {
        let elm;
        const cleanup = () => {
            elm.remove()
            if (elm) {
                elm.onerror = elm.onload = elm = null;
            }
        };
        const done = () => {
            cleanup();
            resolve();
        };
        const error = () => {
            cleanup();
            reject('Failed to load script: ' + url);
        };
        elm = document.createElement('script');
        elm.type = 'text/javascript';
        elm.src = url;
        elm.onload = done;
        elm.onerror = error;
        (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
    })
}

Вопрос к гуру - стоит ли стили тоже асинхронно подключать?
Ответить с цитированием