Есть функция загрузки скрипта:
function loadScript(src) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = src;
script.onload = () => resolve(script);
script.onerror = () => reject(new Error(`Script load error for ${src}`));
document.head.appendChild(script);
});
}
Ну и собственно сама загрузка скриптов:
loadScript("https://learn.javascript.ru/article/promise-chaining/one.js")
.then(script => loadScript("https://learn.javascript.ru/article/promise-chaining/two.js"))
.then(script => loadScript("https://learn.javascript.ru/article/promise-chaining/three.js"))
.then(script => {
one();
two();
three();
});
Я не могу до конца понять две вещи:
1) Вот это присваивание
script.onload = () => resolve(script); почему присваивается через функцию? Мы же можем просто присвоить так:
script.onload = resolve; и записать вызов функции таким образом:
loadScript("https://learn.javascript.ru/article/promise-chaining/one.js")
.then( () => loadScript("https://learn.javascript.ru/article/promise-chaining/two.js"))
.then( () => loadScript("https://learn.javascript.ru/article/promise-chaining/three.js"))
.then( () => {one()})
.then( () => {two()})
.then( () => {three()});
Вопрос если разница в таких записях?
2) Если resolve это функция колбек то почему такой ее вызов дает ошибку
script.onload = resolve(script);, а если запихнуть в функцию стрелку
script.onload = () => resolve(script); то нормально работает?