Как ждать, пока функция моих служб не будет завершена sh в AngularJS? - PullRequest
0 голосов
/ 20 января 2020

Я сделал сервис с функцией.

app.service('getService', ['$http', function($http){    
    this.getProducts = function(log = true){
         $http({
             url: "/admin/products"
         }).then(function successCallback(response) {
             log == true ? console.log(response) : false;
             return response.data;
         }, function errorCallback(response) {
             log == true ? console.log(response) : false;
         });
    }
}]);

После этого я вызываю его и жду, пока функция завершится sh, но это не работает.

app.controller('categoryCtrl', ['$scope','staticsService', function ($scope, getService) {
    turnonloader();
    $scope.model = getService.getProducts().then(function(){
        turnoffloader();
        console.log("Finished!");
    });
}]);

Какое решение является лучшим?

1 Ответ

1 голос
/ 21 января 2020

Служба должна return обещание:

app.service('getService', ['$http', function($http){    
    this.getProducts = function(log = true){
         ̶$̶h̶t̶t̶p̶(̶{̶
         return $http({
             url: "/admin/products"
         }).then(function successCallback(response) {
             log == true ? console.log(response) : false;
             return response.data;
         }, function errorCallback(response) {
             log == true ? console.log(response) : false;
             //IMPORTANT
             throw response;
         });
    }
}]);

Также важно, чтобы обработчик ошибок повторно выдал ответ об ошибке. В противном случае обещание будет преобразовано из отклонения в успешное обещание, которое возвращает undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...