当前位置:嗨网首页>书籍在线阅读

12-用控制台和定时器提供更丰富的反馈

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

[toc]

4.5.3 用控制台和定时器提供更丰富的反馈

回到 console 对象,还有一个方法可以让我们更深入地了解应用程序,就是添加一个定时器并输出开始和结束的时间。

为了实现这个功能,我们将使用 console提供 的另外两个函数: console.time()console.timeEnd() ,这两个函数调用时都需要传入计时器的名字。

在下面的代码中,我们使用了一个持续时间比较久的循环,以便有足够的时间给定时器函数来显示时间差。

console.time('the-loop');
for (var i = 0; i < 10000; i++) {
   ;
}
console.timeEnd('the-loop');

即使我们用了这么大的循环,循环执行的时间也只是刚好可以检测得到。具体时间取决于机器和进程中的加载时间,但是计时器功能不仅限于同步事件。可以为定时器命名的这个特性,让我们能够在异步事件中使用这个功能。

这里,我修改了第1章中的Hello World程序,在程序开始的地方加了一个定时器,在每次发生Web请求的时候结束程序,然后再重启。这能计算每个请求之间的时间差。当然,我们也可以用 Date() 函数来做一个更有代表性的计时器,但那有什么意义呢?

var http = require('http');
console.time('hello-timer');
http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
  console.timeEnd('hello-timer');
  console.time('hello-timer');
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/')
;

重要的是,这段代码演示了如何在异步操作中加入定时器,而这要归功于定时器的命名功能。