开发者社区 问答 正文

能否给出一个使用AsyncLocalStorage的简单示例?

能否给出一个使用AsyncLocalStorage的简单示例?

展开
收起
三分钟热度的鱼 2024-06-06 15:57:53 32 分享 版权
1 条回答
写回答
取消 提交回答
  • 当然可以啦。以下是一个简单的示例,展示了如何在HTTP服务器中使用AsyncLocalStorage来为每个请求分配一个唯一的ID,并在异步操作中使用这个ID进行日志记录:

    import http from 'node:http';  
    import { AsyncLocalStorage } from 'node:async_hooks';  
    const asyncLocalStorage = new AsyncLocalStorage();  
    function logWithId(msg) {  
      const traceId = asyncLocalStorage.getStore();  
      console.log(`${traceId}:`, msg);  
    }  
    let traceId = 0;  
    http.createServer((req, res) => {  
      asyncLocalStorage.run(traceId++, () => {  
        logWithId('start');  
        setImmediate(() => {  
          logWithId('finish');  
          res.end();  
        });  
      });  
    }).listen(8080);
    
    2024-06-06 16:42:53
    赞同 2 展开评论
问答地址: