• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2require('../common');
3const assert = require('assert');
4const { AsyncLocalStorage } = require('async_hooks');
5
6const asyncLocalStorage = new AsyncLocalStorage();
7const asyncLocalStorage2 = new AsyncLocalStorage();
8
9setTimeout(() => {
10  asyncLocalStorage.run(new Map(), () => {
11    asyncLocalStorage2.run(new Map(), () => {
12      const store = asyncLocalStorage.getStore();
13      const store2 = asyncLocalStorage2.getStore();
14      store.set('hello', 'world');
15      store2.set('hello', 'foo');
16      setTimeout(() => {
17        assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'world');
18        assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo');
19        asyncLocalStorage.exit(() => {
20          assert.strictEqual(asyncLocalStorage.getStore(), undefined);
21          assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo');
22        });
23        assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'world');
24        assert.strictEqual(asyncLocalStorage2.getStore().get('hello'), 'foo');
25      }, 200);
26    });
27  });
28}, 100);
29
30setTimeout(() => {
31  asyncLocalStorage.run(new Map(), () => {
32    const store = asyncLocalStorage.getStore();
33    store.set('hello', 'earth');
34    setTimeout(() => {
35      assert.strictEqual(asyncLocalStorage.getStore().get('hello'), 'earth');
36    }, 100);
37  });
38}, 100);
39