AngularJS $ http.get () внутри локальной функции, которая возвращает bool - PullRequest
0 голосов
/ 22 марта 2020

Я новичок в AngularJS.

У меня есть эта локальная функция внутри одного из моих angularjs контроллеров, которые я вызываю, когда выполняю какое-то действие. Заранее спасибо!

$scope.AddUser = () => {

   if(validateUser()) {
      doSomething();
   }
}

function validateUser() {

     //-- This one works
     if(....) {
       return false;
     }

     //-- Even after returning false, it still reaches 
     //-- the last line which is return true therefore executing the 
     //-- doSomething() function
     $http({
       ....
       ....
       }).then(function success(response){
          if(response.data) {
            return false;
          }
       },function error(response) {
          return false;
     });

  return true;
}

1 Ответ

1 голос
/ 22 марта 2020

$http вызов асинхронный, поэтому функция достигает этой строки, прежде чем вы получите результат http get:

return true;

Вам нужно изменить validateUser, чтобы вернуть обещание:

function validateUser() {


     return $http({
       ....
       ....
       }).then(function success(response){
          if(response.data) {
            return false;
          }
       },function error(response) {
          return false;
     });


}

и используйте его так:

validateUser().then((result)=> {
    if (result) doSomething();
})

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