Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
772 B
31 lines
772 B
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import ctx from '../environment/ctx'; |
|
import noop from './noop'; |
|
|
|
// It's better to use timeout instead of interval, because interval can be corrupted |
|
export default function eachTimeout(callback: () => any, getNextTimeout: () => number, runFirst = true) { |
|
const cancel = () => { |
|
clearTimeout(timeout); |
|
}; |
|
|
|
// replace callback to run noop and restore after |
|
const _callback = callback; |
|
if(!runFirst) { |
|
callback = noop; |
|
} |
|
|
|
let timeout: number; |
|
(function run() { |
|
callback(); |
|
timeout = ctx.setTimeout(run, Math.max(0, getNextTimeout())); |
|
})(); |
|
|
|
callback = _callback; |
|
|
|
return cancel; |
|
}
|
|
|