diff options
author | Garrett Jensen <jensen.gar@gmail.com> | 2021-08-05 16:51:32 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-05 15:51:32 -0700 |
commit | 89255fe326050e80ce5394a9c00e11e9be8b1005 (patch) | |
tree | 361aab1eea849ab93f88f3e7d1972c551dcad000 | |
parent | c243b0e9e4a21f50b573820cf0d9059524833f50 (diff) | |
download | async-89255fe326050e80ce5394a9c00e11e9be8b1005.tar.gz |
use queueMicrotask instead of setTimeout in browsers in order to avoid browser throttling (#1761)
-rw-r--r-- | lib/internal/setImmediate.js | 5 | ||||
-rw-r--r-- | test/cargoQueue.js | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/internal/setImmediate.js b/lib/internal/setImmediate.js index 96d26d0..4ef39a0 100644 --- a/lib/internal/setImmediate.js +++ b/lib/internal/setImmediate.js @@ -1,6 +1,7 @@ 'use strict'; /* istanbul ignore file */ +export var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; export var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; export var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; @@ -14,7 +15,9 @@ export function wrap(defer) { var _defer; -if (hasSetImmediate) { +if (hasQueueMicrotask) { + _defer = queueMicrotask; +} else if (hasSetImmediate) { _defer = setImmediate; } else if (hasNextTick) { _defer = process.nextTick; diff --git a/test/cargoQueue.js b/test/cargoQueue.js index 46801c7..cebdaa4 100644 --- a/test/cargoQueue.js +++ b/test/cargoQueue.js @@ -76,12 +76,12 @@ describe('cargoQueue', () => { var call_order = []; var c = async.cargoQueue(worker.bind({ call_order }), 2, 2); c.push(1); - setImmediate(() => { + async.setImmediate(() => { c.push(2); - setImmediate(() => { + async.setImmediate(() => { c.push(3); c.push(4); - setImmediate(() => { + async.setImmediate(() => { c.push(5); c.drain(() => { expect(call_order).to.eql([ |