javascript - 使用 continuation-local-storage 时如何解决 promise ?

标签 javascript node.js promise continuation-local-storage

continuation-local-storage 似乎被使用,也在 express 的上下文中。

然而,非常基本的用法对我不起作用,因为上下文完全丢失了!

var createNamespace = require('continuation-local-storage').createNamespace;
var session = createNamespace('my session');


async function doAsync() {
    console.log('Before getting into the promise: ' + session.get('test'));
    await Promise.resolve();
    console.log('*in* the promise: ' + session.get('test'));
}

session.run(() => {
    session.set('test', 'peekaboo');
    doAsync();
});

结果是:
$ node server_test.js 
Before getting into the promise: peekaboo
*in* the promise: undefined

我做错了什么还是 CLS 完全坏了?
还是图书馆坏了?
如果它不打算与 Promise 一起使用,是否还有其他概念可以作为 threadLocal 存储以正确的方式实现 Multi-Tenancy ?

最佳答案

cls-hooked似乎工作正常,尽管图书馆(如前一个)是两年前最后一次更新的......

如果有人有其他更强大的方法来实现 Multi-Tenancy 的线程本地状态,请分享!

关于javascript - 使用 continuation-local-storage 时如何解决 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56750410/

相关文章:

javascript - 从 Node.js 中的模板写入文件

javascript - 我的程序不断收到此错误 : VM178 SortLib. js:71 Uncaught TypeError: 无法读取未定义的属性 'length'

javascript - 如何在 Javascript + Node 中传递参数?

javascript - Sweet Alert 2 和 Socket.io 在 preConfirm 中使用发出的结果

javascript - 嵌套的 promise 数组。我不明白什么?

javascript - DOM 对象 CSS 更改

javascript - Symfony2 和 Angular.JS 之间共享的翻译

node.js - 如何使用proxyquire和mocha在单元测试中模拟方法调用时模拟时间延迟(超时)?

node.js - 余额转账示例的invoke-transaction.js中的交易ID响应有什么用?

javascript - Node.js 检测两个 Mongoose 查找何时完成