| module.exports = function(func, time, immediate) { | |
| var timeout; | |
| return function() { | |
| var later = function() { | |
| timeout = null; | |
| if (!immediate) { | |
| func.apply(this, arguments); | |
| } | |
| }; | |
| var callNow = immediate && !timeout; | |
| clearTimeout(timeout); | |
| timeout = setTimeout(later, time); | |
| if (callNow) { | |
| func.apply(this, arguments); | |
| } | |
| }; | |
| }; | |