我想存储一个在调用链中所有堆栈帧(自上而下)之间共享的变量.很像Java或C#中的ThreadLocal.
我找到了https://github.com/othiym23/node-continuation-local-storage但它一直在丢失所有用例的上下文,似乎你必须修补你正在使用的库,使其成为本地存储 -意识到我们的代码库或多或少是不可能的.
Node中确实没有其他可用选项吗?可以使用域,堆栈跟踪或类似的东西来获取当前调用链的句柄(id).如果这是可能的,我可以编写自己的线程本地实现.
Jak*_*olý 13
对的,这是可能的.Thomas Watson在2016年奥斯陆NodeConf上发表了他的Instrumenting Node.js in Production
它使用Node.js跟踪 - AsyncWrap(最终应该成为公共Node API中公认的部分).您可以在开源Opbeat Node代理中看到一个示例,或者更好的是查看谈话幻灯片和示例代码.
现在距离我最初提出这个问题已经过去了一年多,看起来我们终于有了一个在 Node.js 8 中采用异步钩子形式的可行解决方案。
https://nodejs.org/api/async_hooks.html
该 API 仍处于试验阶段,但即便如此,看起来已经有一个 Continuation-Local-Storage 的分支在内部使用这个新 API。
https://www.npmjs.com/package/cls-hooked
| 归档时间: | 
 | 
| 查看次数: | 5533 次 | 
| 最近记录: |