В 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
, завершает обработку текущего загрузчика поставщика и вызывает ошибку.
//теперь устанавливаем поставщик "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");
//теперь устанавливаем поставщик "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 )