Size: a a a

Angular.js (1.x) — русскоговорящее сообщество

2020 March 02

C☭

Chadwick ☭ in Angular.js (1.x) — русскоговорящее сообщество
 forgotPassword(model: Models.IForgotPasswordModel): ng.IPromise<void> {
           var deferred = this.$q.defer<void>();

           this.$http.post(HttpService.serviceBase + 'api/account/forgotpassword', JSON.stringify(model))
               .success((data) => { deferred.resolve(); })
               .error((data, status) => { deferred.reject(this.onError(data, status)); });

           return deferred.promise;
       }


почему во многих примерах/проектах используют $q  для httpService'a????
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Chadwick ☭
 forgotPassword(model: Models.IForgotPasswordModel): ng.IPromise<void> {
           var deferred = this.$q.defer<void>();

           this.$http.post(HttpService.serviceBase + 'api/account/forgotpassword', JSON.stringify(model))
               .success((data) => { deferred.resolve(); })
               .error((data, status) => { deferred.reject(this.onError(data, status)); });

           return deferred.promise;
       }


почему во многих примерах/проектах используют $q  для httpService'a????
потому что подобные ангуляровские обёртки позволяют ангуляру понять, когда ему нужно запустить дайджест цикл
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
ну это антипаттерн
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
Chadwick ☭
 forgotPassword(model: Models.IForgotPasswordModel): ng.IPromise<void> {
           var deferred = this.$q.defer<void>();

           this.$http.post(HttpService.serviceBase + 'api/account/forgotpassword', JSON.stringify(model))
               .success((data) => { deferred.resolve(); })
               .error((data, status) => { deferred.reject(this.onError(data, status)); });

           return deferred.promise;
       }


почему во многих примерах/проектах используют $q  для httpService'a????
это от недопонимания вообще, что такое $q и как его использовать
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
допустим, если взять $timeout

если заюзать нативный setTimeout и внутри него изменить данные в $scope, то ангуляр не поймет что нужно обновить юай, и придётся вручную запускать дайджест

если же $timeout, то ангуляр сделает всё сам
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
Константин Тараскин
потому что подобные ангуляровские обёртки позволяют ангуляру понять, когда ему нужно запустить дайджест цикл
$http это и есть ангуляровская штука
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Anton K.
$http это и есть ангуляровская штука
а, ну да
не совсем верно понял код и вопрос

в этом коде КУ лишний однозначно
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Chadwick ☭
 forgotPassword(model: Models.IForgotPasswordModel): ng.IPromise<void> {
           var deferred = this.$q.defer<void>();

           this.$http.post(HttpService.serviceBase + 'api/account/forgotpassword', JSON.stringify(model))
               .success((data) => { deferred.resolve(); })
               .error((data, status) => { deferred.reject(this.onError(data, status)); });

           return deferred.promise;
       }


почему во многих примерах/проектах используют $q  для httpService'a????
в данном случае КУ лишний, но его можно использовать в подобных местах, если нужно как-то кастомно обрабатывать запросы, например если имеем дело с цепочкой промисов
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
можно это все сделать и без $q
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Anton K.
можно это все сделать и без $q
"это" это что?
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
"кастомно обрабатывать запросы, например если имеем дело с цепочкой промисов"
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
думаю, тут напилили через $q как раз из-за deferred.reject(this.onError(data, status));
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
предположение
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Anton K.
"кастомно обрабатывать запросы, например если имеем дело с цепочкой промисов"
ну допустим я открываю модалку, в которой будет кнопка сейв

хочу, чтобы мне от модалки в then вернулся ответ от сервера или реджект при нажатии крестика или при ошибке от сервера
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
как без $q сделать?
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
да, похоже, что ты прав
источник

КТ

Константин Тараскин in Angular.js (1.x) — русскоговорящее сообщество
Anton K.
да, похоже, что ты прав
жаль, думал узнаю какой-то секретный секрет)
придётся дальше инжектить $q :D
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
Константин Тараскин
жаль, думал узнаю какой-то секретный секрет)
придётся дальше инжектить $q :D
да я тоже полез в свои сервисы и тоже там увидел $q.reject :)
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
что-то в голову еще пришла идея делать просто throw error
источник

AK

Anton K. in Angular.js (1.x) — русскоговорящее сообщество
тогда в catch будет кастомная ошибка
источник