]> git.wincent.com - hextrapolate.git/blob - src/debounce.js
4a5145b3c65c8ece40548ebebbbcb584a17a483b
[hextrapolate.git] / src / debounce.js
1 /**
2  * Copyright 2015-present Greg Hurrell. All rights reserved.
3  * Licensed under the terms of the MIT license.
4  *
5  * @flow
6  */
7
8 'use strict';
9
10 /**
11  * Debounce implementation that fires on the trailing edge only. If a call comes
12  * in when a pending call is yet to be finalized, it replaces the pending call.
13  */
14 export default function debounce(fn, interval) {
15   let timeout = null;
16   return function() {
17     const args = arguments;
18     const context = this;
19     clearTimeout(timeout);
20     timeout = setTimeout(() => fn.apply(context, args), interval);
21   };
22 }