- Я пытаюсь динамически вызывать внешние файлы JS. Я использую обещание дождаться загрузки файла, а затем выполнить код. Однако я не хочу запускать весь код внутри положительного обещания. Я хотел бы создать экземпляр, а затем использовать его глобально. Но это не работает. Я получаю сообщение об ошибке, что «app.showText» не является функцией, поскольку экземпляр не существует.
- Я хотел бы динамически загружать внешние js-файлы с классами. Однако, когда я загружаю файлы и вызываю класс, он говорит, что он не определен, поскольку файл загружается после завершения вызова. Таким образом, время процесса загрузки файла превышает время выполнения следующего шага в основном скрипте. Может быть, кто-нибудь сможет мне помочь или объяснить, как достичь этого решения?
ПРИМЕЧАНИЕ: Да. не намерен использовать сервер.
/* function to load external js file */
function injectScript(src) {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.addEventListener('load', resolve);
script.addEventListener('error', e => reject(e.error));
document.head.appendChild(script);
});
}
/* declare global variable */
var app;
/* load script */
injectScript('application.js')
.then(() => {
app = new Application();
app.showText(); // 1. => this works well.
}).catch(error => {
console.error(error);
});
/* make an instance of application */
var appi = new Application() // 2. => this won't work because application.js is loaded after this call is made.
/* to call function from instance */
app.showText() // 1. => this returns an error this is not a function because instance does not exists.
Подробнее здесь: https://stackoverflow.com/questions/793 ... its-instan
Мобильная версия