AngularJS: Wo kann man Versprechen verwenden?
Ich habe einige Beispiele von Facebook-Anmeldediensten gesehen, die verwendet wurdenVersprechen um auf die FB Graph API zuzugreifen.
Beispiel 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;
}
Und Dienste, die genutzt wurden"$scope.$digest() // Manual scope evaluation"
Wann bekam die Antwort
Beispiel # 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
});
}
}
Die Fragen sind:
Was ist derUnterschied In den obigen Beispielen?Was sind dieGründe dafür undFälle benutzen$ q Bedienung?Und wie geht das?Arbeit?