let runningFirstPromise = null
let runningSecondPromise = null
let runningTimeout = null
const pollingOperation = async () => {
if (runningTimeout) {
window.clearTimeout(runningTimeout)
}
if (runningFirstPromise || runningSecondPromise) {
Promise.all([
runningFirstPromise,
runningSecondPromise
]).finally(pollingOperation)
return;
}
// await asyncCall()
runningTimeout = window.setTimeout(pollingOperation, 3000)
}
const firstOperation = async () => {}
const secondOperation = async () => {}
// in some global scope
window.setTimeout(pollingOperation, 3000)
// in some event handler
const runFirstOperation = () => {
runningFirstPromise = firstOperation()
}
const runSecondOperation = () => {
runningSecondPromise = secondOperation()
}
let runningFirstPromise = null
let runningSecondPromise = null
let runningTimeout = null
const pollingOperation = async () => {
if (runningTimeout) {
window.clearTimeout(runningTimeout)
}
if (runningFirstPromise || runningSecondPromise) {
Promise.all([
runningFirstPromise,
runningSecondPromise
]).finally(pollingOperation)
return;
}
// await asyncCall()
runningTimeout = window.setTimeout(pollingOperation, 3000)
}
const firstOperation = async () => {}
const secondOperation = async () => {}
// in some global scope
window.setTimeout(pollingOperation, 3000)
// in some event handler
const runFirstOperation = () => {
runningFirstPromise = firstOperation()
}
const runSecondOperation = () => {
runningSecondPromise = secondOperation()
}