警告:console.timeEnd() 没有这样的标签“响应时间”

Rya*_*ker 9 javascript asynchronous node.js express

情况:

我有一个 Node.js api,它在网站上每秒被调用多次。我正在使用console.time('RESPONSE TIME')console.timeEnd('RESPONSE TIME')测量 api 需要多长时间来响应客户端对每个请求。在 api 内部,我使用 aPromise.all()聚合来自 4 个不同 api 的响应,然后根据 4 个 api 返回的内容返回最终响应。

问题:

除了偶尔记录的警告外,一切都按预期工作Warning: No such label 'RESPONSE TIME' for console.timeEnd()。为什么会这样,我该如何正确避免这种情况?

我推测这是因为 Node 是异步的,虽然一个请求可能仍在等待它的 4 个 api 的响应,但另一个请求将完成并命中console.timeEnd()结束两个计时器,因为它们共享相同的名称。但我在任何地方都找不到答案。

RLa*_*aaa 6

您的推测是正确的,您应该为每个 api 调用都有一个唯一的标签名称。假设每个请求都有一个存储在 req.id 中的唯一标识符,您可以使用以下内容:

console.time(`RESPONSE TIME request ${req.id}`)
// await api call
console.timeEnd(`RESPONSE TIME request ${req.id}`)
Run Code Online (Sandbox Code Playgroud)

  • 我收到此错误,即使有 req.id,我也只能确定我在这之间所做的事情尚未完成或需要一些时间。 (2认同)