问题标签 [async-hooks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何将 AsyncLocalStorage 用于 Observable?
我想在NestJs Interceptor中使用AsyncLocalStorage:
拦截器函数获取一个next
CallHandler
返回一个Observable
.
在这种情况下我不能使用runcallHandler.handle()
(run 回调将在observable 完成之前立即退出):
请参阅损坏的复制示例
我想出的解决方案是这样的:
请参阅工作复制示例
这似乎工作正常,但我不确定这是否真的正确 - 它看起来很混乱且容易出错。所以我想知道:
- 这完全正确吗?
- 有没有更好/更清洁的方法来处理这个问题?
node.js - 猫鼬钩子中的 AsyncLocalStorage 松散上下文 POST 保存
如何在所有流程中保持相同的上下文?
为什么 AsyncHooks 上下文在 Schema.post('save') 中是松散的,但在 Schema.pre('save') 中却没有?
请查看 testes-mongoose 分支并执行yarn example:mongoose。GIT HUB 来源: https ://github.com/almerindo/traceability/tree/testes-mongoose
文件:examples/mongoose/schema/traceability.schema.ts
输出是:
注意:只有 MONGOOSE HOOKS POST SAVE 上下文中的输出为 NULL
node.js - Node.js async_hooks 丢失跟踪
我已阅读 nodejsasync_hooks
模块的文档并想尝试一下,这是我的demo.mjs
:
它打印的是什么:
你可以看到promise resolve 8
第 3 行有,但以前从来没有INIT PROMISE(8)
,为什么?
node.js - 是否可以使用“executionAsyncId”(异步挂钩)在 express/nodejs 中为每个请求创建一个唯一的全局上下文存储/状态?
我知道异步钩子是实验性的,但撇开它不谈,我想尝试的是为每个请求发出请求、响应或全局/存储状态,就像 PHP 所做的那样,它只是在任何地方获取请求或响应(GET ["field"]
,POST ["field"]
等。 ..)。我一直在研究node-request-context 之类的库,它们executionAsyncId
用作唯一值来保存当前请求上下文的数据,我想要一些简单的东西,但我想保证它是唯一的,因此我可以做一些事情像我服务器上的每个请求一样::
为每个请求存储数据的状态:
requestState
无需通过参数传递即可全局访问的函数(这是一个简单的示例,但可能有多个需要的深层嵌套函数requestState
):
和路由器:
这是有效的吗?这是否保证我将收到每个请求的唯一状态?即使客户端(移动设备、Web 等)并行发出请求等?
如果无效,还有其他方法吗?
我希望你能帮帮我 :)
javascript - 我在哪里可以找到关于为什么 Node 14 将 Promise {} 更改为 Promise {undefined, Symbol(async_id_symbol)...} 的任何文档?
前段时间我遇到了这个变化,我无法追踪到任何发行说明,无论是 Node 还是 V8。
在 Node12 之前,未等待的 promise 返回 empty Promise {}
,但从 Node 14 开始,它返回:
我清楚地看到它在 Node14 中发生了变化,因为它根本不存在于 Node 12 上。
有谁知道此更改的来源并可以指向文档/提供任何解释以帮助理解此更改及其影响?