diff options
Diffstat (limited to 'packages/idb-bridge/src/util/queueTask.ts')
-rw-r--r-- | packages/idb-bridge/src/util/queueTask.ts | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/idb-bridge/src/util/queueTask.ts b/packages/idb-bridge/src/util/queueTask.ts index 53563ffd2..297602c67 100644 --- a/packages/idb-bridge/src/util/queueTask.ts +++ b/packages/idb-bridge/src/util/queueTask.ts @@ -15,7 +15,20 @@ */ export function queueTask(fn: () => void) { - setImmediate(fn); + let called = false; + const callFirst = () => { + if (called) { + return; + } + called = true; + fn(); + }; + // We must schedule both of these, + // since on node, there is no guarantee + // that a setImmediate function that is registered + // before a setTimeout function is called first. + setImmediate(callFirst); + setTimeout(callFirst, 0); } export default queueTask; |