2015-12-22 2 views
0

Я прочитал эту статью здесь: http://weblog.west-wind.com/posts/2014/Oct/24/AngularJs-and-Promises-with-the-http-Service Он говорит, что это популярная модель использовать обернутое обещание, но официальный Doc ANGULAR здесь https://docs.angularjs.org/api/ng/service/$http говорит: «$ HTTP наследие метода обещает успех и ошибки устарели Использование. вместо стандартного метода. Если $ httpProvider.useLegacyPromiseExtensions установлено в false, то эти методы будут бросать ошибку $ http/legacy ", в каком виде я должен взять? Кажется, мне придется использовать then().Используйте обернутое обещание или просто обещание

Может ли кто-нибудь пролить свет? Спасибо

+0

Избегайте '.success' и' .error' методы. Они не цепляются хорошо и устарели. – georgeawg

+0

Спасибо за ответ –

ответ

1

Быстрый ответ: Не заверните $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

+0

Спасибо за разъяснение –

Смежные вопросы