pydash icon indicating copy to clipboard operation
pydash copied to clipboard

throttle behavior different from lodash: no trailing edge call

Open jd20 opened this issue 6 years ago • 2 comments

When using throttle from lodash, if one or more calls are made during the wait period, a single call will be scheduled at the end of the wait period (i.e. the trailing edge). For example:

const throttled = throttle(() => console.log("called"), 5000)
for (var i=0; i < 3; i++) throttled()

You should see the throttled function called twice. However, with pydash, I'm only seeing a single call. If using to check for updates to a resource, you might miss the last update as a result. Here's the equivalent pydash example that I tried:

throttled = throttle(lambda: print("called"), 5000)
[throttled() for _ in range(3)]

Just taking a quick look at the source, pydash's debounce is lacking lodash's leading / trailing options. If those were present and implemented, throttle could just be rewritten as a call to debounce (which is how lodash's throttle is done).

jd20 avatar Feb 27 '18 00:02 jd20

Care to submit a PR?

dgilland avatar Apr 09 '18 03:04 dgilland

Sure, I'm backed up with other stuff right now, but I'll try to revisit this later when I get a chance.

jd20 avatar Apr 09 '18 03:04 jd20