Недавно прочитал главу
Promise и решил подключить скрипты через них, но почему-то ничего не получается.
Подключаю:
- jquery
- bootstrap
- svg-pan-zoom
Два последних используют jquery.
Мой код://Указываем путь к файлам
let aSrcPath = ['../node_modules/jquery/dist/jquery.min.js',
'../node_modules/bootstrap/dist/js/bootstrap.min.js',
'../node_modules/svg-pan-zoom/dist/svg-pan-zoom.min.js'
];
//Формируем массив промисов
let req = aSrcPath.map( url => {
return new Promise(function(resolve, reject) {
let script = document.createElement('script');
script.src = url;
script.onload = () => resolve(script);
script.onerror = () => reject(new Error(`Ошибка загрузки скрипта ${src}`));
document.head.append(script);
});
});
Дальше я пробую подключить их в цепочку:
req[0].then((res) => {console.log('Загружен: ' + res.src);
return req[1];
})
.then((res) => {console.log('Загружен: ' + res.src);
return req[2];
})
.then((res) => {
console.log('Загружен: ' + res.src);
//Пытаемся отрисовать карту через svgPanZoom
svgPanZoom('#wsr_map', {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true
});
});
И ловлю ошибки (как я понял вызванные неподключением jquery):
Причем периодически, при перезагрузке страницы, один из скриптов, либо bootstrap, либо svg-pan запускается, но оба никогда)
Объясните пожалуйста в чем дело.
p.s. Я понимаю, что такой способ подключения скриптов не оптимален и лучше это делать через node. Но моя задача разобраться с Promise