Skip to content

Instantly share code, notes, and snippets.

@ramingar
Last active January 12, 2016 13:05
Show Gist options
  • Select an option

  • Save ramingar/458b79d2479e77ff64ad to your computer and use it in GitHub Desktop.

Select an option

Save ramingar/458b79d2479e77ff64ad to your computer and use it in GitHub Desktop.
Esperar a que una función asíncrona de angularjs acabe para seguir #angularjs #promise #deferred #q #funciones #asincrona
$scope.getPersonIdFromEmail = function (email) {
var parameters = $scope.init('person/search/by-email');
parameters.email = email;
var deferred = $q.defer();
$q.all([$scope.get(parameters)]).then(function (data) {
/* En data irá el resultado que devuelva cada función que se le haya pasado a $q.all() */
/* Por tanto, en data[0] irá el resultado de $scope.get(parameters) */
deferred.resolve(data[0]._embedded.person[0]);
}, function (data) {
deferred.reject(data);
});
return deferred.promise;
};
$scope.insertPersonIntoOrganization = function (userEmail, idOrganization) {
$scope.getPersonIdFromEmail(userEmail).then(function (data) {
var parameters = $scope.init('organization', idOrganization, 'person');
$scope.model.person = data._links.self.href;
$scope.save(null, 'refresh', parameters);
}, function (data) {
//TODO: cool stuff when getPersonIdFromEmail fails
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment