Answer
t.me/js_testОтвет:
new Promise((resolve, reject)
Объяснение:
.catch ведёт себя как try..catch. Мы можем иметь столько обработчиков .then, сколько мы хотим, и затем использовать один .catch в конце, чтобы перехватить ошибки из всех обработчиков.
В обычном try..catch мы можем проанализировать ошибку и повторно пробросить дальше, если не можем её обработать. То же самое возможно для промисов.
Если мы пробросим (throw) ошибку внутри блока .catch, то управление перейдёт к следующему ближайшему обработчику ошибок. А если мы обработаем ошибку и завершим работу обработчика нормально, то продолжит работу ближайший успешный обработчик .then.
В примере ниже мы видим другую ситуацию с блоком .catch. Обработчик (*) перехватывает ошибку и не может обработать её (например, он знает как обработать только URIError), поэтому ошибка пробрасывается далее.
Управление переходит от первого блока .catch (*) к следующему (**), вниз по цепочке.
Код для проверки:
new Promise((resolve, reject) => {
throw new Error("Ошибка!");
}).catch(function(error) { // (*)
if (error instanceof URIError) {
} else {
alert("Не могу обработать ошибку");
throw error;
}
}).then(function() {
}).catch(error => { // (**)
alert(`Неизвестная ошибка: ${error}`);
});