0

我正在尝试按照此处的说明创建一个每 5 分钟打印一次的脚本。但它不起作用:当我使用node scripts.js alive它调用它时,它不会给出任何输出,只是在终端中打开一个新行。我究竟做错了什么?

const program = require('commander');

program.command('alive').action(async function() {

    console.log("testttt");

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    };

    for (let i = 0; i <= 36; i++) {
        await sleep(300000);
        console.log(i);
    };

    process.exit(0);
});

我也试过了,结果一样:

    for (let i = 0; i <= 36; i++) {
        await sleep(300000).then(async function(response) {
            console.log(i);
        });
    };
4

3 回答 3

1

指挥官的文档建议,为了执行命令,您需要在末尾添加一行,例如:

program.parse(process.argv);
于 2019-07-09T14:00:32.820 回答
1

这个脚本实际上让你每秒钟都可以做一些事情。

运行它node script.js

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms))
}

async function func() {
    console.log('func')
    await sleep(1000)
    func()
}

func()

更新- 按照指挥官的要求工作

运行它./script.js -t

#!/usr/bin/env node

const program = require('commander')

program.option('-t, --tick', 'start the ticker')
program.parse(process.argv)

if (program.tick) {
    console.log('program.ticker started')
    ticker()
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms))
}

async function ticker() {
    for (let i = 0; i <= 5; i++) {
        await sleep(1000)
        console.log(`tick ${i}`)
    }
    process.exit()
}
于 2019-07-09T14:04:09.927 回答
0

嘿,这里的问题是你如何使用指挥官。正如你在这里看到的,我删除了它并且它有效。检查指挥官的文件。

于 2019-07-09T14:03:44.930 回答