Next函数在Node JS异步本地存储中间件中是如何工作的

cgyqldqp  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(126)

我正在创建一个中间件,用于将跟踪ID添加到每个请求中,并遇到异步钩子和异步本地存储,但我对为什么next函数在run方法中传递感到困惑,当我删除next函数并将其移动到run函数之外时,中间件无法按预期工作,因此请有人向我解释一下将next()放入run()中是为了使事情正常工作。下面是代码示例--

app.use((req, res, next) => {
  asyncLocalStorage.run(new Map(), () => {
    asyncLocalStorage.getStore().set("requestId", uuid());
    next();
  });
});
k2fxgqgv

k2fxgqgv1#

如果将next()放在回调函数之外,它将不会在asyncLocalStorage创建的上下文中运行,因此您将无法访问存储。
文档中也对此进行了说明:
存储区在回调函数外部无法访问。任何在回调中创建的异步操作都可以访问存储区。

相关问题