Библиотека $q - действительно, то что нужно.
Делается это так:
$scope.example = function (value) {
var q = $q.defer();
if (value == 'what_you_need') {
q.resolve(variable); //подставляете в variable значение, которое вам надо
}
else {
q.reject(variable); //подставляете в variable значение, которое вам надо в противных случаях
}
return q.promise;
}
и уже в callbackе создаете такую цепочку:
$scope.auth = false; //эта переменная и примет значение, когда callback отработает
$scope.promise = $scope.example(your_variable);
$scope.promise.then ( function (v) { $scope.auth = v },
function (err) { $scope.auth = err }
)