node.js + mikeal / request – 如何测量请求时间?

我正在使用mikeal / request库来访问WebAPI。 我想logging到每个请求的控制台执行时间。

我有多个和嵌套的请求,所以我不想把每一个: var start = Date.now(); ... var time = Date.now() - start; console.log('Finished in '+time+' ms'); var start = Date.now(); ... var time = Date.now() - start; console.log('Finished in '+time+' ms');

我希望有这样做的可能性: requestWithDefaults = request.defaults({ ... startTime: null }); requestWithDefaults.on('request.prepare', function () { startTime = Date.now(); }); requestWithDefaults.on('request.finished', function () { var time = Date.now() - startTime; console.log('Finished in '+time+' ms'); }); requestWithDefaults = request.defaults({ ... startTime: null }); requestWithDefaults.on('request.prepare', function () { startTime = Date.now(); }); requestWithDefaults.on('request.finished', function () { var time = Date.now() - startTime; console.log('Finished in '+time+' ms'); });

但我不知道该如何挂钩那些时刻。 以某种简单的方式可能吗?

如果您只想logging某个进程的持续时间,则可以使用内置的Node.js console.time()console.timeEnd()函数。 您可以在这里查看节点控制台文档 。

您可以编写一个小模块来包装请求function,并添加console.time [End]语句,如下所示:

 var request = require('request'); module.exports = { get: function(url, next) { // start console timer console.time(url); request.get(url, function() { // end console timer console.timeEnd(url); next.apply(this, arguments); }); } }; 

然后你会包含这个模块,而不是直接的请求模块,这会给你默认情况下的日志logging。 注意:这只是GET请求的一个例子,其余的可以构build出来。

[label]: 475ms格式输出[label]: 475ms 。 非常好,非常干净,可以显示完成所需的时间。 这不会给你从moment.js很好的格式化的可能性,但它确实很简单。