Demo of $q and session storage in angular

HTML

<div ng-app="myApp" ng-controller="mainController as main">
    <input ng-model="main.user" type="text" />
    <button ng-click="main.save()">Save</button>
    <button ng-click="main.getUser()">Get</button>
    <button ng-click="main.clearUser()">Clear</button>
    <p>{{main.userFromStorage}}</p>
</div>

JavaScript

angular.module('myApp', []).controller('mainController', ['sessionStorageService', function (sessionStorageService) {
    var vm = this;
    this.user = '';
    this.save = function () {
        sessionStorageService.setCurrentUser({
            'name': this.user
        });
    };
    this.clearUser = function () {
        sessionStorageService.clearCurrentUser();
    };
    this.getUser = function () {
        sessionStorageService.getCurrentUser().then(function (user) {
            vm.userFromStorage = user;
        }, function () {
            vm.userFromStorage = 'No user !!!';
        });
    };
}]).service('sessionStorageService', ['$window', '$q', function ($window, $q) {
    this.setCurrentUser = function (user) {
        $window.sessionStorage.setItem('currentUser', JSON.stringify(user));
    },
    this.getCurrentUser = function () {
        if ($window.sessionStorage.getItem('currentUser')) {
            return $q.when(JSON.parse($window.sessionStorage.getItem('currentUser')));
        } else {
            var deferred = $q.defer();
            deferred.reject('No Login User');
            return deferred.promise;
        }
    };
    this.clearCurrentUser = function () {
        $window.sessionStorage.removeItem('currentUser');
    };
}]);