javascript - 使用 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 存储以正确的方式实现多租户?
解决方案
cls-hooked似乎工作正常,尽管该库(如上一个)是两年前最后一次更新的......
如果有人有其他更强大的方法来实现多租户的线程本地状态,请分享!
推荐阅读
- javascript - function.call() 返回全局 this
- django - Django bootstrap-pagination 使用继承的模板?
- c# - 在 C# 中检测 MySQL“超时过期”错误的正确方法是什么?
- c# - 如何使用单个标签,以便如果您多次单击它,将显示以下控件?
- embedded - STM32F769DISCO + 使用 ESP8266 的无线连接
- java - 如何修复 Eclipse 中的 JpaRepository 错误?
- regex - 在文本中创建不同的重复值
- java - JdbcTemplate classCastException 在 Mockito.when thenReturn 期间
- jquery - 关于 JQuery 焦点事件
- reactjs - reactJs中锚标签中require属性的意义是什么