developit / decko

:dash: The 3 most useful ES7 decorators: bind, debounce and memoize
https://developit.github.io/decko/
MIT License
1.03k stars 36 forks source link

@debounce is named improperly — should be @throttle #9

Open ivancuric opened 7 years ago

ivancuric commented 7 years ago

In the docs its says:

To debounce means "call this at most once per N ms". All outward function calls get collated into a single inward call, and only the latest (most recent) arguments as passed on to the debounced function.

What you're doing is throttling, not debouncing. lodash.throttle:

Creates a throttled function that only invokes func at most once per every wait milliseconds.

lodash.debounce:

Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since the last time the debounced function was invoked.

And while on the topic, a (real) @debounce would be a great addition.

developit commented 7 years ago

Agreed! It's a difficult thing to change now that its there, but what about adding an option and making the default an actual debounce? @pl12133 called this out to me a couple weeks ago, I'd forgotten about the name mixup.

ivancuric commented 7 years ago

The sooner you do it the better if you see a future for this package. We have enough misnamed "oh-it's-too-late-now" stuff in the web dev industry as it is :)

Anyway, decided to use https://www.npmjs.com/package/core-decorators instead for the project I'm working on since I do need both. The implementations are quite similar as well.

developit commented 7 years ago

Oh nice, I hadn't seen that module! Looks good.

Connorelsea commented 7 years ago

I'd love to have a real debounce option here somehow. Separating throttle and debounce would make a lot of sense. Also core-decorators seems to have deprecated their debounce and throttle decorators for some reason