我正在使用mikeal / request库来访问WebAPI。 我想记录每个请求的控制台执行时间。
我有多个嵌套请求,所以我不想放入每个请求:
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');
});
但我不知道如何勾结那些时刻。它是以某种方式以简单的方式实现的吗?
答案 0 :(得分:1)
如果您只想记录某个进程的持续时间,可以使用内置的Node.js console.time()
和console.timeEnd()
函数。你可以check out the Node console docs here。
您可以编写一个小模块来包装请求功能,并添加如下所示的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);
});
}
};
然后,您将直接包含此模块而不是请求模块,这将默认为您提供日志记录。注意:这只是GET请求的一个示例,其余的可以构建出来。
以[label]: 475ms
格式输出。非常好,非常干净,以显示完成某项所需的ms数。这不会给你一个很好的格式化可能性来自moment.js,但它确实很简单。