gpt4 book ai didi

javascript - Deno 有办法跟踪异步上下文吗?

转载 作者:行者123 更新时间:2023-12-04 15:24:33 24 4
gpt4 key购买 nike

广义地说,在 NodeJS 中,每当代码运行时,程序都会创建“异步上下文”,通过事件循环或微任务队列创建稍后运行的回调。网络请求,setTimeout回调、 promise 等
在 NodeJs 的现代版本中,你有(仍然是实验性的) async_hooks module跟踪这些异步资源的生命周期。
以前版本的 NodeJS 具有现已弃用的 process.addAsyncListener -- 由 the async-listener polyfill package 维持生命.
Deno 是否有任何内置或第三方功能允许用户态代码跟踪这些异步上下文的创建?或者 Deno 的工作原理是否使这个概念变得无关紧要?

最佳答案

我不认为这种功能目前或通过 3rd 方模块是公开可用的。
简要查看功能 async_hooks提供(可能会漏掉一些重要的东西,请纠正我),似乎 initpromiseResolve更像是 Deno 中有趣的那些(Deno 在其 API 中几乎不使用回调)。
Deno 进行特权操作的方式是向 Rust 端发送序列化的文本消息(主要是 JSON)和零拷贝缓冲区,当 Rust 端调用带有响应消息的回调时,它会从 Rust 端接收消息。如果我们可以通过向一些核心消息 channel 方法添加一个小的包装监听器来拦截其中的一些,那将会很有趣,例如Deno.core.dispatchByName (几乎所有 Deno 特权操作,异步或同步都使用这个。Deno.core 上还有很多有趣的其他东西,请参阅源代码中的 core/core.js。不知何故,从 Rust 接收异步消息的 handleAsyncMsgFromRust 没有公开尽管)。
不幸的是 Deno.core目前被卡住(实际上我是这个更改的负责人)以避免覆盖(这可能会导致升级时硬崩溃,因为 Deno.core 托管关键但易失的内部 API)。可能您可以在 Deno 存储库中打开一个问题,询问其他人是否愿意实现某些接口(interface)以允许用户将消息捕获回调注入(inject)概念 sendrecv方法。 (我目前无法投稿)

关于javascript - Deno 有办法跟踪异步上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62544235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com