Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 99 из 114 · 10 мин
Promise.resolve, Promise.reject, Promise.allSettled, Promise.any, Promise.race, Promise.try и Promise.withResolvers.
У нас три зеркала с данными. Какое использовать?
Зависит от задачи: все результаты — allSettled, самый быстрый успешный — any, кто первый — race.
Promise.resolve() · Promise.reject()resolve(v) — уже выполненный промис (или тот же, если v — промис), reject(e) — уже отклонённый.Promise.resolve(220).then((p) => console.log("цена", p));
Promise.reject(new Error("нет")).catch((e) => console.log("ошибка", e.message));Promise.allSettled(){ status: "fulfilled", value } или { status: "rejected", reason }. Никогда не падает.const res = await Promise.allSettled([Promise.resolve("меню"), Promise.reject(new Error("акции"))]);
console.log(res.map((r) => r.status));Promise.any()AggregateError.const fast = await Promise.any([Promise.reject(new Error("зеркало 1 лежит")), wait(50).then(() => "зеркало 2")]);
console.log(fast);Promise.race()const timeout = (ms) => new Promise((_, reject) => setTimeout(() => reject(new Error("тайм-аут")), ms));
try { await Promise.race([wait(500), timeout(50)]); } catch (e) { console.log(e.message); }Promise.try()Promise.try(fn) вызывает fn и всегда возвращает промис: синхронная ошибка тоже становится отклонением.Promise.try(() => JSON.parse("{")).catch((e) => console.log("поймали", e.name));Promise.withResolvers(){ promise, resolve, reject } — можно выполнить промис снаружи, например из обработчика события.const { promise, resolve } = Promise.withResolvers();
setTimeout(() => resolve("данные готовы"), 50);
console.log(await promise);Все нужны — all. Все, но без падения — allSettled. Любой успешный — any. Самый быстрый — race.
Напиши withTimeout(promise, ms): возвращает результат promise, а если он не успел за ms — отклоняется ошибкой с текстом "Тайм-аут". Используй Promise.race.
Promise.race — пока нетВыберите один ответ.
Когда Promise.allSettled отклоняется?
Выберите один ответ.
Что бросит Promise.any, если все промисы упали?
Проверяем состояние обучения…