12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * angular-strap
- * @version v2.3.9 - 2016-06-10
- * @link http://mgcrea.github.io/angular-strap
- * @author Olivier Louvignes <olivier@mg-crea.com> (https://github.com/mgcrea)
- * @license MIT License, http://www.opensource.org/licenses/MIT
- */
- 'use strict';
- angular.module('mgcrea.ngStrap.helpers.debounce', []).factory('debounce', [ '$timeout', function($timeout) {
- return function(func, wait, immediate) {
- var timeout = null;
- return function() {
- var context = this;
- var args = arguments;
- var callNow = immediate && !timeout;
- if (timeout) {
- $timeout.cancel(timeout);
- }
- timeout = $timeout(function later() {
- timeout = null;
- if (!immediate) {
- func.apply(context, args);
- }
- }, wait, false);
- if (callNow) {
- func.apply(context, args);
- }
- return timeout;
- };
- };
- } ]).factory('throttle', [ '$timeout', function($timeout) {
- return function(func, wait, options) {
- var timeout = null;
- if (!options) options = {};
- return function() {
- var context = this;
- var args = arguments;
- if (!timeout) {
- if (options.leading !== false) {
- func.apply(context, args);
- }
- timeout = $timeout(function later() {
- timeout = null;
- if (options.trailing !== false) {
- func.apply(context, args);
- }
- }, wait, false);
- }
- };
- };
- } ]);
|