Q.js promise

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/q.js/0.9.6/q.js"></script>

JavaScript

function foo() {
 	var deferred = Q.defer();
    setTimeout(function(){
        console.log("foo");
        deferred.resolve();
    }, 500);
  	return deferred.promise;
}

function bar() {
  console.log("bar");
}

function helloWorld() {
  foo().then(bar);
}

helloWorld();