2

J'ai deux fonctions is_exist() et enregistrer() fonctions. Dans la fonction de sauvegarde, j'appelle la fonction is_exist() avant d'exécuter une valeur booléenne de retour save.it. mais mon problème est save() fonction est pas attendre que is_exist() fonction pour retourner la value.after is_exist fonction() a appelé simplement sauter dans la ligne suivante et continuer à exécuter des lignes Bellow, après save () terminé is_exist() fonction renvoie la valeurcomment attendre appel de fonction valeur de retour befor aller à la ligne suivante dans anguler js

var app = angular.module('my_app', []) 
app.controller('my_con', ['$scope', '$http', function($scope, $http) { 

    $scope.save = function(sector) { 
     var del_status = $scope.is_exist(sector); 

     console.log(del_status); // is_exsis return value 

     if(!del_status) { 
      // save 
     } 
    } 

    $scope.is_exist = function(sector) { 
     $http({ 
      method : 'POST', 
      url : '/is_data_exist', 
      contentType : 'application/json; charset=utf-8', 
      data : angular.toJson({ 
       'sector': sector 
      }), 
      dataType: 'json', 
     }).then(function successCallback(response) { 

      console.log(response.data); //http respond 

      if(response.data == 'False') { 
       return false; 
      } 
      else { 
       return true; 
      } 
     }) 
    } 
}]) 

est-il possible d'attendre jusqu'à ce que is_exsis() fonction de la valeur de retour, puis aller à la ligne suivante

+0

il est asynchrone, cela signifie que vous ne pouvez pas, car vous ne savez pas quand la promesse sera résolue. Ce que vous pouvez faire est de passer le code suivant en fonction de votre promesse, de sorte que la promesse l'exécute. quelque chose comme 'var del_status = $ scope.is_exist (secteur, fonction() {console.log (del_status);/* etc * /});' (attention, vous avez une faute de frappe, existez! = exsis) – Kaddath

+0

dupliquer: https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call?rq=1 – Nevosis

+0

@Nevosis [link] (https://stackoverflow.com/ questions/14220321/how-do-i-return-the-response-from-asynchronous-call? rq = 1) votre lien concerne ajax et ma question concerne angularjs – user6900333

Répondre

1

Utilisation de la fonction callback dans $scope.is_exsis(sector); et effectuer cette action dans la fonction de rappel -

var del_status = $scope.is_exsis(function(data){ 
    console.log(del_status); // is_exsis return value 

    if(!del_status) { 
     // save 
    } 
}); 
0

Vous devriez être en mesure de retourner la promesse et la chaîne alors pour que la sauvegarde ne soit pas terminée avant is_exists se fait.

$scope.save = function(sector) { 
    $scope.is_exsis(sector).then(function(del_status){ 

     console.log(del_status); // is_exsis return value 

     if(!del_status) { 
     // save 
     } 
    }); 

} 

$scope.is_exist = function(sector) { 
    return $http({ 
     method : 'POST', 
     url : '/is_data_exist', 
     contentType : 'application/json; charset=utf-8', 
     data : angular.toJson({ 
      'sector': sector 
     }), 
     dataType: 'json', 
    }).then(function successCallback(response) { 

     console.log(response.data); //http respond 

     if(response.data == 'False') { 
      return false; 
     } 
     else { 
      return true; 
     } 
    }) 
}