UNPKG

vui-design

Version:

A high quality UI Toolkit based on Vue.js

42 lines (32 loc) 744 B
import restArgs from "./restArgs"; import delay from "./delay"; export default function(fn, wait, immediate) { let timeout, result; let later = function(context, args) { timeout = null; if (args) { result = fn.apply(context, args); } }; let debounced = restArgs(function(args) { if (timeout) { clearTimeout(timeout); } if (immediate) { let callNow = !timeout; timeout = setTimeout(later, wait); if (callNow) { result = fn.apply(this, args); } } else { timeout = delay(later, wait, this, args); } return result; }); debounced.cancel = function() { clearTimeout(timeout); timeout = null; return fn; }; return debounced; };