diff options
| author | Henry Jameson <me@hjkos.com> | 2020-10-17 19:24:07 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2020-10-17 19:24:07 +0300 |
| commit | 29ff0be92cfd87ba95d1f78323794dfb1223b514 (patch) | |
| tree | 79836b7fb5b3e325274a833c34fd4c5f6155ba2d /src/services/promise_interval/promise_interval.js | |
| parent | a463959a365a5d618a79c96a26f6506e700d6ea3 (diff) | |
| parent | 3ca729d09880813420a263221cdc68bcca13a1fb (diff) | |
Merge remote-tracking branch 'origin/develop' into settings-changed
* origin/develop: (48 commits)
fix/leftover-emoji-checkboxes-in-settings
Apply 1 suggestion(s) to 1 file(s)
Translated using Weblate (Spanish)
Translated using Weblate (Persian)
Translated using Weblate (Persian)
Translated using Weblate (Polish)
update changelog
Stop click propagation when unhiding nsfw
Fix Follow Requests title style
Translated using Weblate (Persian)
Translated using Weblate (Persian)
Translated using Weblate (French)
Added translation using Weblate (Persian)
Translated using Weblate (Chinese (Traditional))
Translated using Weblate (Chinese (Simplified))
Translated using Weblate (Italian)
Translated using Weblate (English)
Translated using Weblate (English)
Translated using Weblate (Basque)
Translated using Weblate (Spanish)
...
Diffstat (limited to 'src/services/promise_interval/promise_interval.js')
| -rw-r--r-- | src/services/promise_interval/promise_interval.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/services/promise_interval/promise_interval.js b/src/services/promise_interval/promise_interval.js new file mode 100644 index 00000000..cf17970d --- /dev/null +++ b/src/services/promise_interval/promise_interval.js @@ -0,0 +1,27 @@ + +// promiseInterval - replacement for setInterval for promises, starts counting +// the interval only after a promise is done instead of immediately. +// - promiseCall is a function that returns a promise, it's called the first +// time after the first interval. +// - interval is the interval delay in ms. + +export const promiseInterval = (promiseCall, interval) => { + let stopped = false + let timeout = null + + const func = () => { + promiseCall().finally(() => { + if (stopped) return + timeout = window.setTimeout(func, interval) + }) + } + + const stopFetcher = () => { + stopped = true + window.clearTimeout(timeout) + } + + timeout = window.setTimeout(func, interval) + + return { stop: stopFetcher } +} |
