node.js + mikeal / request - 如何衡量请求时间?

时间:2014-09-05 04:39:57

标签: javascript node.js time request

我正在使用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'); });

但我不知道如何勾结那些时刻。它是以某种方式以简单的方式实现的吗?

1 个答案:

答案 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,但它确实很简单。