Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 47 из 114 · 9 мин
Promise, then, catch, finally, состояния pending/fulfilled/rejected и цепочки.
Файл загружается несколько секунд. Как написать код, который сработает, когда он загрузится?
Я дам тебе промис — обещание результата. Он или выполнится, или будет отклонён.
Promiseconst upload = new Promise((resolve) => {
setTimeout(() => resolve("Файл загружен"), 200);
});
upload.then((text) => console.log(text));
console.log("Ждём…");then()promise.then(fn) — вызвать fn с результатом. Возвращает новый промис — можно строить цепочки.Promise.resolve(220)
.then((price) => price * 2)
.then((total) => console.log(total));catch()Promise.reject(new Error("Сеть недоступна"))
.catch((e) => console.log("Увы:", e.message));finally()Promise.resolve("ок").finally(() => console.log("Спиннер скрыт"));Promise.all()Promise.all([Promise.resolve(1), Promise.resolve(2)]).then((r) => console.log(r));У каждой цепочки промисов должен быть catch — иначе ошибка потеряется.
Напиши upload(name), которая возвращает промис: через 100 мс он выполняется строкой ` ${name} загружен . Затем вызови upload("фото.png").then(...) и сохрани результат в ready`.
upload возвращает промис — пока нетready заполнен через then — пока нетВыберите один ответ.
Какие состояния бывают у промиса?
Выберите один ответ.
Что поймает .catch() в конце цепочки?
Проверяем состояние обучения…