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()结束两个计时器,因为它们共享相同的名称。但我在任何地方都找不到答案。
您的推测是正确的,您应该为每个 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)
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |