问题标签 [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.

0 投票
1 回答
454 浏览

node.js - 如何将 AsyncLocalStorage 用于 Observable?

我想在NestJs Interceptor中使用AsyncLocalStorage

拦截器函数获取一个next CallHandler返回一个Observable.

在这种情况下我不能使用runcallHandler.handle() (run 回调将在observable 完成之前立即退出):

请参阅损坏的复制示例

我想出的解决方案是这样的:

请参阅工作复制示例

这似乎工作正常,但我不确定这是否真的正确 - 它看起来很混乱且容易出错。所以我想知道:

  1. 这完全正确吗?
  2. 有没有更好/更清洁的方法来处理这个问题?
0 投票
0 回答
135 浏览

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

0 投票
1 回答
34 浏览

node.js - Node.js async_hooks 丢失跟踪

我已阅读 nodejsasync_hooks模块的文档并想尝试一下,这是我的demo.mjs

它打印的是什么:

你可以看到promise resolve 8第 3 行有,但以前从来没有INIT PROMISE(8),为什么?

0 投票
0 回答
35 浏览

node.js - 是否可以使用“executionAsyncId”(异步挂钩)在 express/nodejs 中为每个请求创建一个唯一的全局上下文存储/状态?

我知道异步钩子是实验性的,但撇开它不谈,我想尝试的是为每个请求发出请求、响应或全局/存储状态,就像 PHP 所做的那样,它只是在任何地方获取请求或响应(GET ["field"],POST ["field"]等。 ..)。我一直在研究node-request-context 之类的库,它们executionAsyncId用作唯一值来保存当前请求上下文的数据,我想要一些简单的东西,但我想保证它是唯一的,因此我可以做一些事情像我服务器上的每个请求一样::

为每个请求存储数据的状态:

requestState无需通过参数传递即可全局访问的函数(这是一个简单的示例,但可能有多个需要的深层嵌套函数requestState):

和路由器:

这是有效的吗?这是否保证我将收到每个请求的唯一状态?即使客户端(移动设备、Web 等)并行发出请求等?

如果无效,还有其他方法吗?

我希望你能帮帮我 :)

0 投票
0 回答
95 浏览

javascript - 我在哪里可以找到关于为什么 Node 14 将 Promise {} 更改为 Promise {undefined, Symbol(async_id_symbol)...} 的任何文档?

前段时间我遇到了这个变化,我无法追踪到任何发行说明,无论是 Node 还是 V8。

在 Node12 之前,未等待的 promise 返回 empty Promise {},但从 Node 14 开始,它返回:

我清楚地看到它在 Node14 中发生了变化,因为它根本不存在于 Node 12 上。

有谁知道此更改的来源并可以指向文档/提供任何解释以帮助理解此更改及其影响?