Как дождаться динамически загруженного внешнего js-файла, а затем выполнить его экземпляр как глобальную переменную [дубJavascript

Форум по Javascript
Ответить
Anonymous
 Как дождаться динамически загруженного внешнего js-файла, а затем выполнить его экземпляр как глобальную переменную [дуб

Сообщение Anonymous »

  • Я пытаюсь динамически вызывать внешние файлы 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»