By writing this I'm taking a risk of looking like an idiot who has failed to read the docs. So please be gentle. AngularJS uses a promise module called $q. It originates from this beast of a project. You use it like this for example: angular.module('myapp') .controller('MainCtrl', function($scope, $q) { $scope.name = 'Hello '; var wait = function() { var deferred = $q.defer(); setTimeout(function(