Skip to content

Incorrect behaviour of throttleEnd #9

Closed
dmitry-korolev opened this issue Jul 6, 2018 · 0 comments
Closed

Incorrect behaviour of throttleEnd #9

dmitry-korolev opened this issue Jul 6, 2018 · 0 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@dmitry-korolev
Copy link
Contributor

dmitry-korolev commented Jul 6, 2018

Problem:
In a case when a function throttled with throttleEnd is invoked several times within a wait period it is finally called by throttleEnd with arguments, provided at first invoke.

const throttled = throttleEnd(100, console.log)
throttled(1)
throttled(2)
throttled(3)
// -> 1

Lodash throttle behaves differentely:

const throttled = _.throttle(console.log, 100, { leading: false, trailing: true })
throttled(1)
throttled(2)
throttled(3)
// -> 3

RxJS operator auditTime, which is similar to throttleTime, but emits at the end of the wait period, behaves likewise:

const throttled = new Observable(observer => {
	observer.next(1)
	observer.next(2)
	observer.next(3)
}).pipe(auditTime(100))
throttled.subscribe(console.log)
// -> 3

Using the last provided set of arguments seems much more logical to me.

I suggest changing the throttleEnd implementation to make it more sense.

@osorokotyaga osorokotyaga added this to the 2.0.0 milestone Aug 15, 2018
@osorokotyaga osorokotyaga self-assigned this Aug 15, 2018
@osorokotyaga osorokotyaga added the enhancement New feature or request label Aug 15, 2018
osorokotyaga added a commit that referenced this issue Aug 15, 2018
Now, when a function throttled with throttleEnd is invoked several times within a wait period it is finally called by throttleEnd with arguments, provided at last! invoke.

Resolves: #9
osorokotyaga added a commit that referenced this issue Sep 18, 2018
Now, when a function throttled with throttleEnd is invoked several times within a wait period it is finally called by throttleEnd with arguments, provided at last! invoke.

Resolves: #9
osorokotyaga added a commit that referenced this issue Sep 21, 2018
Now, when a function throttled with throttleEnd is invoked several times within a wait period it is finally called by throttleEnd with arguments, provided at last! invoke.

Resolves: #9
osorokotyaga added a commit that referenced this issue Mar 22, 2019
* Call throttleEnd with last arguments within `wait` period (#11)

Now, when a function throttled with throttleEnd is invoked several times within a wait period it is finally called by throttleEnd with arguments, provided at last! invoke.

Resolves: #9

* Remove sanitize util. (#12)

src/sanitize was too dumb, better use specially oriented sanitize packages

Resolves: #3

* Extend find* utilities passed arguments to callback. (#16)

* Extend find* utilities passed arguments to callback.

According to spec Array.prototype.find and Array.prototype.findIndex passes three arguments to callback function: element, index and array. Extend current implementation according to spec.

Resolves: #15

* Code style change for array/findLast.

Replace while with for statement.

* Feature/remove docs from master (#13)

* Remove docs folder.

* Add script to generate docs and publish it to gh-pages branch.

Resolves: #4

* Тайпинги (#10)

* fix tests

* Тайпинги

* add ts-jest

* Перевел на typescript

* Добавил в сборку компиляцию typescript и копирование при блиде

* Поправил тайпинги, добавил ts-jest и @types/ramda в package.json

* Вынес ramda типы в файл types.ts

* move all definitions to types.ts

* Memoize without types (#28)

* Adds .editorconfig file

* Adds editors service folders to .gitignore

* Updates README.MD with support information

* Adds memoization functions

* Adds Map using to deepSizeLimit memoization function

* Fixes test descriptions and code indendation (4 spaces)

* Adds memoizeOne function (save only last result - like reselect)

* Renames "shallow" to "strict" (it's more proper name for this functionality)

* Omit string conversion (#27)

* object/omit add test for string conversion bug

* Fix object/omit props string conversion.

Resolves: #22

* Remove utils/is/not in favor of utils/not

Resolves: #18

* release 2.0.0-alpha

* rename memoize functions to ts

* Update CHANGELOG.md

* Upgrade to babel@7 and remove copying .babelrc to dist package (#35)

Resolves: #14

* fix bug in generating random index for array/shuffle (#34)

Resolves: #25

* Increase coverage of some utilities (#36)

Resolves: #26

* Fix array/maxBy edge cases (#37)

Resolves: #29

* add type guards for src/is utilities (#38)

Resolves: #30

* add is/shallowEqual (#39)

Resolves: #31

* Add default exports (#40)

* split typings to files, remove unused types

* split createCacheFrom and MemoizeWith to separate files

* improve modules build to prevent to generate useless code

Resolves: #32

* fix docs generation (#41)

enable docs generation for typescript
fix missing files on gh-pages

Resolves: #33

* publish 2.0.0-alpha.2

* fix typings for src/array

* fix typings for src/function

* fix typings for src/is

* fix typings for src/object

* fix typings for src/promise

* fix typings for src/string

* fix typings for src/

* fix typings

* add typings to benchmark runner

* fix typings

* publish 2.0.0-alpha.3

* fix typings

* publish 2.0.0-alpha.4

* fix typings

* publish 2.0.0-alpha.5

* fix typings

* fix build

* publish 2.0.0-alpha.6

* publish 2.0.0
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants