Skip to content

Instantly share code, notes, and snippets.

@deltaepsilon
Created June 4, 2015 17:37
Show Gist options
  • Save deltaepsilon/19b789a0925198a0c466 to your computer and use it in GitHub Desktop.
Save deltaepsilon/19b789a0925198a0c466 to your computer and use it in GitHub Desktop.
$q Demo
<html>
<head>
<title>$q Demo</title>
</head>
<body ng-app="qDemo">
<div ng-controller="qDemoCtrl">
<label></label>
<input type="number" ng-model="testNumber">
<button ng-click="fireAsync(testNumber)">Async!</button>
<h1>{{ newNumber }}</h1>
<div ng-controller="nestedController">
<input type="number" ng-model="nestedTestNumber">
<button ng-click="fireAsync(nestedTestNumber)">Nested Async!</button>
<h1>{{ newNumber }}</h1>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.js"></script>
<script type="text/javascript">
var a = 'black';
(function() {
var a = 'blue';
console.log('1 a', a);
a = "red";
})();
(function() {
console.log('2 a', a);
})();
(function() {
a = 'green';
console.log('3 a', a);
})();
console.log('4 a', a);
angular.module('qDemo', []);
angular.module('qDemo').service('asyncDemoService', function($q, $timeout, $http) {
return {
asyncAction: function(number) {
var deferred = $q.defer();
$timeout(function() {
if (number < 0) {
deferred.reject("Number must be greater than zero!");
} else if (number === 0) {
deferred.notify("You're zero");
} else {
deferred.resolve(number);
}
}, 1000);
return deferred.promise;
},
iTunesCall: function() {
return $http.JSONP("http://itunesadkfljadlfkja.com/adfdaf");
}
};
});
angular.module('qDemo').controller('qDemoCtrl', function($scope, asyncDemoService) {
$scope.fireAsync = function(number) {
var promise = asyncDemoService.asyncAction(number);
promise.then(function(newNumber) {
$scope.newNumber = newNumber;
}, function(error) {
console.log('error', error);
}, function(message) {
console.log('notify message', message);
});
};
$scope.setNewNumber = function(number) {
$scope.newNumber = number;
};
});
angular.module('qDemo').controller('nestedController', function($scope, asyncDemoService) {
$scope.fireAsync = function(number) {
var promise = asyncDemoService.asyncAction(number);
promise.then(function(newNumber) {
scope.setNewNumber(newNumber);
//$scope.newNumber = newNumber;
});
};
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment