【问题标题】:Order of execution of API requests in VSCodeVSCode 中 API 请求的执行顺序
【发布时间】:2022-12-24 08:02:25
【问题描述】:

我正在尝试使用 node.js 中的 Promise.all 并行进行一些 API 调用。结果我得到了正确的输出。我想检查我的 API 调用是否实际上是并行进行的,而不是串行进行的。我在哪里可以找到发出呼叫和接收响应的顺序(或者更确切地说是可视化)?是否有任何工具(VSCode 扩展)可用于检查相同的内容?

【问题讨论】:

  • 为请求计时。如果每个请求需要 0.1 秒,而 10 个请求需要 1 秒,那么它们是连续进行的。但是,如果 10 个请求大约需要 0.25 秒,那么它们可能是并行发出的。请注意,从您的调制解调器/路由器到互联网并从互联网返回到您的以太网/wifi 卡的位是串行发送的,而不是并行发送的。因此,在某些时候,消息会在硬件级别按顺序排队。并行请求唯一改进的是浪费在软件等待上的时间

标签: node.js visual-studio-code


【解决方案1】:

Node 不包含与dev tools 中的“网络”选项卡等效的内容。一些选项是

  • 使用像mitmproxy这样的调试代理
  • 使用nock记录请求
  • 检测您的请求函数

调试代理(mitmproxy)

mitmproxyBurp SuiteFiddlerCharles 在可视化方面可能更适合您。

在节点中,您可能需要配置 http agent 来代理请求,具体取决于正在使用的 http 客户端库。

一些库会尊重环境中设置的HTTP_PROXY/HTTPS_PROXY

诺克

Nock 有一个记录器模式,可以打印或存储所有使用节点http (fetch is not supported yet) 的请求/响应

nock.recorder.rec({ output_objects: true, dont_print: true, })

要获取捕获的请求/响应数组:

const requests = nock.recorder.play()

代码检测

您还可以将计时数据添加到您的请求处理程序

async function get(path) {
  start = Date.now()
  const response = await request(path)
  end = Date.now()
  return {
    start,
    response
    end,
  }
}

Promise.all 的另一边进行调查。

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2021-12-01
    相关资源
    最近更新 更多