mirror of
https://github.com/nodejs/node.git
synced 2025-04-30 15:41:06 +00:00

Inspired by the callstack at https://github.com/nodejs/node/issues/34556#issuecomment-666743528 If the wanted store is equal to the active store it's not needed to create an AsyncResource. Refs: https://github.com/nodejs/node/issues/34556#issuecomment-666743528 PR-URL: https://github.com/nodejs/node/pull/34616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
31 lines
1013 B
JavaScript
31 lines
1013 B
JavaScript
'use strict';
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const {
|
|
AsyncLocalStorage,
|
|
executionAsyncResource
|
|
} = require('async_hooks');
|
|
|
|
const asyncLocalStorage = new AsyncLocalStorage();
|
|
|
|
const outerResource = executionAsyncResource();
|
|
|
|
const store = new Map();
|
|
asyncLocalStorage.run(store, () => {
|
|
assert.strictEqual(asyncLocalStorage.getStore(), store);
|
|
const innerResource = executionAsyncResource();
|
|
assert.notStrictEqual(innerResource, outerResource);
|
|
asyncLocalStorage.run(store, () => {
|
|
assert.strictEqual(asyncLocalStorage.getStore(), store);
|
|
assert.strictEqual(executionAsyncResource(), innerResource);
|
|
const otherStore = new Map();
|
|
asyncLocalStorage.run(otherStore, () => {
|
|
assert.strictEqual(asyncLocalStorage.getStore(), otherStore);
|
|
assert.notStrictEqual(executionAsyncResource(), innerResource);
|
|
assert.notStrictEqual(executionAsyncResource(), outerResource);
|
|
});
|
|
});
|
|
});
|
|
|
|
assert.strictEqual(executionAsyncResource(), outerResource);
|