我正在尝试在命令行中构建一个简单的时间跟踪工具,基本上我想运行启动和停止命令并输出经过的时间。目前我遇到了问题,因为我的计时器变量没有保持请求之间的值。这是我到目前为止写的简单脚本; 我是否需要生成另一个进程,或者我应该将开始时间存储在.txt文件或数据库中并从那里使用它?
#! /usr/bin/env node
var cli = require('commander'),
time,
timer = null;
cli
.version('0.0.1');
cli
.command('start')
.description('Start timer')
.action(start);
cli
.command('stop')
.description('Stop timer')
.action(stop);
cli.parse(process.argv);
function start() {
timer = new Date;
}
function stop() {
time = new Date - timer;
hours = Math.floor(time/3600);
seconds = time % 3600;
minutes = Math.floor(seconds / 60);
seconds = seconds % 60;
seconds = Math.floor(seconds);
console.log(hours + ' hours ' + minutes + ' minutes ' + seconds + " seconds")
}
答案 0 :(得分:1)
如果没有一些外部机制来存储任何类型的状态(例如数据库,平面文件等),程序的每次调用都不会知道在其他任何调用中发生的事情。
每次运行应用程序时,所有变量都会被初始化,写入,读取等等,然后一旦应用程序停止,所有内容都会被分箱,它所使用的任何内存都会返回到操作系统,所有变量都会消失。
保持时间的最简单方法可能是让您的代码读取和写入平面文件(可能是json格式)。这确实存在潜在的问题,例如并发和文件锁定,但我不担心这个问题,直到它们真正成为一个问题。 (然后你可以使用数据库等)。