1.0.3 • Published 8 years ago

angular-promise-monitor v1.0.3

Weekly downloads
4
License
Apache-2.0
Repository
github
Last release
8 years ago

angular-promise-monitor

Tiny and fast library for monitoring promises in angular applications. Inspired by angular-promise-tracker, but with faster GUI updates and smaller footprint.

How to use

HTML:

<body ng-app="myApp" ng-controller="MyController">
  <i class="fa fa-spinner fa-spin" ng-show="getDataMonitor.isActive"></i>

  <script src="angular.js"></script>
  <script src="eyecatch.promise-monitor.js"></script>
</body>

JS:

angular.module('myApp', ['eyecatch.promise-monitor'])

.controller('MyController', ['$scope', '$http', '$timeout', 'promiseMonitor', function($scope, $http, $timeout, promiseMonitor) {
  $scope.getDataMonitor = promiseMonitor.create();
  
  var getData = function() {
    var promise = $timeout(function() {
      console.log('Got data');
    }, 1000);
    
    $scope.getDataMonitor.addPromise(promise);
  };
  
  getData();
}]);

Advanced usage

Multiple promises

The addPromise function can be called multiple times, the isActive property will be true until all promises are resolved or rejected.

$scope.getDataMonitor = promiseMonitor.create();
  
var getData = function() {
  var promise1 = $timeout(function() {
    console.log('Got data from first source');
  }, 1000);
  var promise2 = $timeout(function() {
    console.log('Got data from second source');
  }, 1500);
  
  $scope.getDataMonitor.addPromise(promise1);
  $scope.getDataMonitor.addPromise(promise2);
};

getData();

Monitoring $http calls

You can monitor $http calls by adding an instance of a promise monitor in the options object.

$scope.getDataMonitor = promiseMonitor.create();
  
var getData = function() {
  return $http.get('/data', {
      monitor: $scope.getDataMonitor
    }).then(function(response) {
      console.log('Got data');
    });
};

getData();

Manual resolving

$scope.getDataMonitor = promiseMonitor.create();
  
var getData = function() {
  var promise = $scope.getDataMonitor.addPromise();
  $http.get('/data').then(function(response) {
      promise.resolve();
    });
};

getData();

Reference

promiseMonitor (service)

Methods:

NameReturnsDescription
createAn instance of PromiseMonitorCreates a new instance

PromiseMonitor (class)

Methods:

NameReturnsDescription
addPromiseAn instance of deferredTakes a promise as an argument and updates the isActive property when it is resolved. Can be called multiple times, the isActive property will then be updated when all promises are resolved. Can also be called without any parameters, the isActive property will then be updated when the returned deferred is resolved.
destroyResolves all promises at once and sets the isActive property to false
cancelSame as destroy

Properties:

NameReturnsDescription
isActiveA boolean valueIndicates whether this instance has any active promises
optionsAn objectThe options that were used when creating the PromiseMonitor instance. Currently not in use.