Answer

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}`);

});

Report Page