Быстрый ответ: Не заверните $http
обещаний.
В article you cite, парень пишет:
Лично я смирился просто экспедиция за $ HTTP генерируется Обещания и используя .success() и .error() по стоимости немного несогласованности. На этом этапе я должен знать, что этот конкретный вызов в моей службе возвращает обещание $ http, и что мне нужно вызвать функции .success() и .error() на нем, а не .then() для обработки обратных вызовов , Но я по-прежнему предпочитаю, чтобы мои услуги были дополнены дополнительными обещаниями. Независимо от того, где вы нажимаете это поведение, где-то в стеке у вас есть эти несогласованные, в которых различие между обещаниями $ http обещает и обещание Акции появляется - так что я мог бы также вытолкнуть его на прикладной уровень и сохранить бессмысленное кодирование, чтобы скрыть деталь реализации.
Это вздор. Служба $http
всегда возвращала $q
обещаний. Методы .then
и .catch
всегда были доступны. (Не хорошо документировано, но доступно.)
Вот что-то, я написал для другого вопроса.
Deprecation из .success
и .error
методов в $http
службы
The AngularJS команде в их новой найденной мудрости решил принизить в .success
и .error
методы. Эти методы были ошибочными, и я говорю хорошее избавление.
Для получения дополнительной информации об отказе (или я должен сказать об отказе) методов .success
и .error
, посетите последние AngularJS $http Service API Docs -- deprecation notice.
Мы должны избегать .success
и .error
методы и научиться использовать .then
, .catch
и .finally
теперь.
Наследие AngularJS v1.2
Я сделал некоторые spelunking in the AngularJS Github. Утилища $http
создает $q
обещание (L750) и затем прикрепляет багги .success
метод (L769) и багги .error
метод (L776).
Это означает, что люди, застрявшие с использованием более старой версии AngularJS, могут перейти на методы .then
, .catch
и .finally
.
- Is there a shortcut to proxy-resolve/reject a promise to an Angular
Избегайте '.success' и' .error' методы. Они не цепляются хорошо и устарели. – georgeawg
Спасибо за ответ –