Привет всем! У меня возникла проблема с подключением внешнего JavaScript файла. Я пытаюсь вызвать файл из функции, и вроде бы он подгружается (я даже пробовал добавить в него alert для проверки). Но я не могу понять, как вернуть из него значение и заполнить массив.
Вот примерный код того, что я пытаюсь сделать:
function загрузитьСкрипт(файл) {
const скрипт = document.createElement('script');
скрипт.src = файл;
скрипт.type = 'text/javascript';
скрипт.async = true;
скрипт.onload = function() {
console.log('Скрипт ' + файл + ' загружен');
};
document.head.appendChild(скрипт);
}
let команды = загрузитьСкрипт('данные.js');
// В файле данные.js:
let список = [];
for (let i = 0; i < 4; i++) {
список.push({название: 'Команда ' + i});
}
return список;
Как мне правильно получить данные из внешнего файла и использовать их в основном скрипте? Буду благодарен за любую помощь!
Есть еще вариант с использованием AJAX. Можно сделать GET-запрос к файлу данные.js и получить его содержимое как текст. Потом просто выполнить этот код через eval() или новую Function(). Примерно так:
fetch(‘данные.js’)
.then(response => response.text())
.then(code => {
let команды = new Function(code + ‘; return список;’)();
console.log(команды);
});
Только учти, что eval может быть небезопасен, если код из ненадежного источника.
слушай, я сам недавно с этим мучился! попробуй использовать промисы. создай в данные.js функцию, которая возвращает твой список, например getСписок(). а в основном файле сделай так:
загрузитьСкрипт(‘данные.js’).then(() => {
let команды = getСписок();
console.log(команды);
});
функция загрузитьСкрипт должна возвращать промис, который резолвится когда скрипт загрузился. так ты сможешь дождаться загрузки и потом использовать данные. надеюсь поможет!