Ala*_*orm 5 javascript deno async-hooks
广泛地说,在 NodeJS 中,每当代码运行时,程序都会创建“异步上下文”,并通过事件循环或微任务队列创建稍后运行的回调。网络请求、setTimeout回调、Promise 等。
在现代版本的 NodeJs 中,您可以使用(仍处于实验阶段)async_hooks模块来跟踪这些异步资源的生命周期。
以前版本的 NodeJS 已经弃用了process.addAsyncListener——通过polyfillasync-listener包保持活力。
Deno 是否有任何内置或第三方功能允许用户态代码跟踪这些异步上下文的创建?或者 Deno 的工作原理是否有什么因素使得它成为一个无关紧要的概念?
我认为目前或通过第三方模块无法公开提供此类功能。
简单研究一下async_hooks提供的功能(可能会遗漏一些重要的东西,请纠正我),看起来init和promiseResolve更像是 Deno 中有趣的功能(Deno 几乎在其 API 中使用回调)。
Deno 执行特权操作的方式是向 Rust 端发送序列化文本消息(主要是 JSON)和零拷贝缓冲区,并且当 Rust 端调用带有响应消息的回调时,它会从 Rust 端接收消息。如果我们可以通过向一些核心消息通道方法添加一个小的包装侦听器来拦截其中的一些,例如Deno.core.dispatchByName(几乎所有 Deno 特权操作、异步或同步都使用这个方法),那将会很有趣。还有很多有趣的其他方法上可用的东西Deno.core,请参阅core/core.js源代码。但不知何故handleAsyncMsgFromRust,从 Rust 接收异步消息的部分并未公开)。
不幸的Deno.core是,目前已冻结(实际上我是负责这一更改的人)以避免覆盖(这可能会导致升级时发生硬崩溃,因为Deno.core主机关键但不稳定的内部 API)。也许您可以在 Deno 存储库中提出一个问题,询问其他人是否愿意实现某些接口,以允许用户向概念send和recv方法注入消息捕获回调。(我目前无法贡献)
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |