'use strict'; angular. module('lettersApp', ['ngRoute']). config(function($routeProvider) { $routeProvider. otherwise(resolveRedirectTo('/foo1')). when('/foo1', resolveRedirectTo('/bar1')). when('/bar1', resolveRedirectTo('/baz1')). when('/baz1', resolveRedirectTo('/qux1')). when('/qux1', { template: '', resolve: resolveLetters() }). when('/foo2', resolveRedirectTo('/bar2')). when('/bar2', resolveRedirectTo('/baz2')). when('/baz2', resolveRedirectTo('/qux2')). when('/qux2', { template: '{{ $resolve.letters.length }}', resolve: resolveLetters() }); // Helpers function resolveLetters() { return { letters: function($q) { return $q(function(resolve) { window.setTimeout(resolve, 2000, ['a', 'b', 'c', 'd', 'e']); }); } }; } function resolveRedirectTo(path) { return { resolveRedirectTo: function($q) { return $q(function(resolve) { window.setTimeout(resolve, 250, path); }); } }; } });