업무에 필요해서 만들었다가 공유해도 유용할 것 같아서 올려봅니다.
그냥 함수에 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/