У меня есть код, который использует .success () .error (), поэтому мне нужно его перенести. Вопрос в том, является ли .then () и .catch () одной и той же идеей? Большинство примеров, которые я вижу, имеют then (successFunction, errorFunction), но с макетом проще изменить на .then () для .success () и .catch () для .error (), предполагая, что это вопрос здесь, который дает такое же поведение. Кажется, но знает ли кто-нибудь о возможных проблемах с использованием .catch () и функции ошибок в .then ()?
@ Игорь Это немного лучше. Все еще кажется немного расплывчатым, учитывая данное объяснение, но некоторым помогает.
Прочтите Обещание: затем против потом + поймать. Короткий ответ заключается в том, что .catch будет обнаруживать ошибки в обработчике успеха .then, а обработчик отклонения .then - нет.
@georgeawg Спасибо за это. Вопрос в том, перехватывает ли catch () ошибки из самого обещания, как дескриптор ошибки в then ()? Если да, catch () действует как один из способов отлова ошибок в двух разных местах, где произошла ошибка?
.catch улавливает не только два местоположения, но и отказы от всех предыдущих обещаний в цепочке обещаний. Прочтите Угловой порядок выполнения с $q - Цепочка обещаний.


@Igor Я просмотрел это и не увидел точного объяснения того, что .catch () дает такое же поведение во всех ситуациях, что и .then (успех, ошибка).