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很好的格式化的可能性,但它确实很简单。