1

我正在尝试在命令行中构建一个简单的时间跟踪工具,基本上我想运行启动和停止命令并输出经过的时间。目前我遇到了问题,因为我的计时器变量在请求之间没有保存值。这是我到目前为止写的简单脚本;我需要生成另一个进程还是应该将开始时间存储在 .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")
}
4

1 回答 1

1

如果没有一些外部机制来存储任何类型的状态(例如数据库、平面文件等),程序的每次调用都将不知道在任何其他调用中发生了什么。

每次运行应用程序时,所有变量都会被初始化、写入、读取等,然后一旦应用程序停止,所有内容都会被分箱,它使用的所有内存都会返回给操作系统,所有变量都会消失。

保持时间的最简单方法可能是让您的代码读取和写入平面文件(可能是 json 格式)。这确实有潜在的问题,例如并发性和文件锁定,但在它们真正成为问题之前我不会担心这一点。(然后你可以只使用数据库等)。

于 2013-09-21T14:24:12.037 回答