AngularJS : Où utiliser promesses?

J'ai vu quelques exemples de Facebook Login services qui ont été à l'aide de promesses pour accéder à FB API Graphique.

Exemple #1:

this.api = function(item) {
  var deferred = $q.defer();
  if (item) {
    facebook.FB.api('/' + item, function (result) {
      $rootScope.$apply(function () {
        if (angular.isUndefined(result.error)) {
          deferred.resolve(result);
        } else {
          deferred.reject(result.error);
        }
      });
    });
  }
  return deferred.promise;
}

Et services utilisés "$scope.$digest() //Manual scope evaluation" quand eu la réponse

Exemple #2:

angular.module('HomePageModule', []).factory('facebookConnect', function() {
    return new function() {
        this.askFacebookForAuthentication = function(fail, success) {
            FB.login(function(response) {
                if (response.authResponse) {
                    FB.api('/me', success);
                } else {
                    fail('User cancelled login or did not fully authorize.');
                }
            });
        }
    }
});

function ConnectCtrl(facebookConnect, $scope, $resource) {

    $scope.user = {}
    $scope.error = null;

    $scope.registerWithFacebook = function() {
        facebookConnect.askFacebookForAuthentication(
        function(reason) { //fail
            $scope.error = reason;
        }, function(user) { //success
            $scope.user = user
            $scope.$digest() //Manual scope evaluation
        });
    }
}

JSFiddle

Les questions sont:

  • Quel est le différence dans les exemples ci-dessus?
  • Quels sont les raisons et cas à utiliser $q service?
  • Et comment est-il travail?
  • on dirait que vous devriez lire sur ce que sont les promesses, et pourquoi ils sont utilisés en général... ils ne sont pas exclusifs à angulaires et il y a beaucoup de matériel disponible
  • bon point, mais je m'attendais à une réponse complexe qui permettra de couvrir à la fois: pourquoi ils sont utilisés en général et comment l'utiliser dans Angulaire. Merci pour votre suggestion
InformationsquelleAutor Maksym | 2013-03-24