1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/horseluke-load-script-promise

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
appendix-customize-provider-load-result-detector.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 12:20 a4f9b6b

О пользовательском детекторе результатов загрузки поставщика

Введение

В loadScriptPromise.setProvider разработчик может использовать опцию detectProvider, чтобы настроить результат загрузки своего поставщика.

Опция detectProvider должна быть анонимной функцией. Например:

loadScriptPromise.setProvider("ddddd", {
    "src": "./dddddd",
    "detectProvider": function(loader){
        return true;
    }
})

Что может получить detectProvider

Как анонимная функция, опция detectProvider получает текущий объект загрузчика поставщика. У объекта загрузчика есть следующие ключи:

  • id — строка, представляющая идентификатор поставщика;
  • option — объект, который является картой опций поставщика;
  • status — текущий статус загрузчика провайдера. «detect» означает перед загрузкой файлов сценариев, «load» — после успешной загрузки файлов сценариев. Другие значения используются внутри или редко встречаются, и если вы столкнулись с этим случаем, вам следует сообщить об ошибке;
  • script — если status равен «load», это скрипт DOM. В противном случае он равен нулю;
  • loadProvider — используйте эту функцию, если хотите загрузить другого поставщика внутри текущего загрузчика. Это единственный способ гарантировать отсутствие бесконечной рекурсивной зависимости между поставщиками.

Что должен возвращать detectProvider

Как анонимная функция, опция detectProvider должна возвращать результат обнаружения в соответствии со следующими рекомендациями:

  • Если обнаружение прошло успешно, верните объект поставщика или просто логическое значение true.

  • В противном случае верните логическое значение false или null, чтобы указать на неудачное обнаружение.

Опция detectProvider может также возвращать Promise API. Передайте результат обнаружения функции разрешения.

Любая ошибка, возникшая в опции detectProvider, завершает обработку текущего загрузчика поставщика и вызывает ошибку.

Пример

Обнаружение загрузки без Promise API

//теперь устанавливаем поставщик "abcdefg" с помощью опции `detectProvider` 

loadScriptPromise.setProvider("abcdefg", {
    src: "https://127.0.0.1/abcdefg.js",
    detectProvider: function(loader){
        if(window["abcdefg"]){
            return window["abcdefg"];    //Если обнаружение успешно, вернуть объект поставщика или логическое значение true
        }
        return false;    //Если обнаружение не удалось, вернуть логическое значение false или null
    }
});

//Теперь загружаем поставщика "abcdefg"
loadScriptPromise.loadProvider("abcdefg").then(function(){
    
});

//или используем async / await
//await loadScriptPromise.loadProvider("abcdefg");

Обнаружение загрузки с Promise API

//теперь устанавливаем поставщик "abcdefg" с помощью опции `detectProvider` 

loadScriptPromise.setProvider("abcdefg", {
    src: "https://127.0.0.1/abcdefg.js",
    detectProvider: function(loader){
        return new Promise(function(resolve, reject){
            if(window["abcdefg"]){
                return resolve(window["abcdefg"]);    //Если обнаружение успешно, разрешить объект поставщика или логическое значение true
            }
            return resolve(false);    //Если обнаружение не удалось, разрешить логическое значение false или null
        });

    }
});

//Теперь загружаем поставщик "abcdefg"
loadScriptPromise.loadProvider("abcdefg").then(function(){
    
});

//или используем async / await
//await loadScriptPromise.loadProvider("abcdefg");

Загрузка другого поставщика при обнаружении загрузки

//теперь устанавливаем поставщик "abcdefg" с помощью опции `detectProvider` 

loadScriptPromise.setProvider("abcdefg", {
    src: "https://127.0.0.1/abcdefg.js",
    detectProvider: async function(loader){
        await loader.loadProvider("jQuery");    //загружаем другого поставщика
        if(window["abcdefg"]){
            return resolve(window["abcdefg"]);    //Если обнаружение успешно, разрешаем объект поставщика или логическое значение true
        }
        return resolve(false);    //Если обнаружение не удалось, разрешаем логическое значение false или null

    }
});

//Теперь загружаем поставщик "abcdefg"
loadScriptPromise.loadProvider("abcdefg").then(function(){
    
});

//или используем async / await
//await loadScriptPromise.loadProvider("abcdefg");

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/horseluke-load-script-promise.git
git@api.gitlife.ru:oschina-mirror/horseluke-load-script-promise.git
oschina-mirror
horseluke-load-script-promise
horseluke-load-script-promise
main