파라미터에 따라 debounce 되는 함수 만들기

업무에 필요해서 만들었다가 공유해도 유용할 것 같아서 올려봅니다.
그냥 함수에 debounce를 만드는 것은 쉬우나, 파라미터에 따라서 debounce되는 함수가 필요 했어요.
lodash를 활용했습니다.

function memoizeDebounce<T extends (...args: any) => any>(
  func: T,
  wait: number = 0,
  options: _.DebounceSettings = {},
) {
  const mem = _.memoize(function(param: string) {
    return _.debounce(func, wait, options);
  });
  return function(...args: any[]) {
    mem(args.join('|'))(...args);
  };
}

const log = memoizeDebounce(console.log, 2000);

log('Hello', 'World');
log('Hello', 'World 2');
log('Hello', 'World');
log('Hello', 'World 2');
log('Hello', 'World');
log('Hello', 'World 2');

실행해 볼 수 있는 링크: https://jsfiddle.net/gimdongwoo/onzmf5qb/3/

2 Likes