如何使用nodejs安排任务?

时间:2017-03-17 15:01:06

标签: javascript node.js

我想基于时间执行任务,所以我现在每隔1分钟使用val res: Map[String, (Int, Int)] = userInfo .groupBy { case (user, _) => user } .mapValues { it: Iterable[(String, (Int, Int))] => it .map { case (_, tuple) => tuple } .reduce[(Int, Int)] { case ((a, b), (c, d)) => (a + c, b + d) } } 运行但我在控制台中看不到任何内容,不知道实施的是什么错误?

cron.js

node-schedule

4 个答案:

答案 0 :(得分:1)

初步想法:

这里有关于cron模式的FART:有6个星号。第一个(可选)对应于秒。您需要省略最后一个星号,以便每分钟运行一次。

你是否曾试图像这样先运行它?它有效吗?

var cron = require('node-schedule');

cron.scheduleJob('*/1 * * * *', function() {
    console.log('This runs at the 30th mintue of every hour. FROM NODE SCHEDULE');
});

答案 1 :(得分:0)

答案 2 :(得分:0)

我已修改您的代码,从现在起每1分钟运行一次。

    var cron = require('node-schedule');
    cron.scheduleJob({ rule: '*/59 * * * * *' }, function () {
        console.log('This runs at the 30th mintue of every hour. FROM NODE SCHEDULE');
        /*
        async.eachSeries(directories, function (dir, cb1) {
            var dir = __dirname + dir;
            console.log('reading', dir);

            // get files for the directory
            fs.readdir(dir, function (err, files) {
                if (err) return cb1(err);

                // loop through each file
                async.eachSeries(files, function (file, cb2) {
                    var filePath = path.resolve(dir + '/' + file);
                    // get info for the file
                    fs.stat(filePath, function (err, stats) {
                        if (err) return cb2(err);
                        var fileInfo = {
                            fileDate: stats.birthtime,
                            filename: file
                        };
                        console.log('fileInfo', fileInfo);
                        compareDates(fileInfo, filePath);
                        cb2(null, fileInfo);
                    });
                }, cb1);

            });
        });
        */
    });

答案 3 :(得分:0)

这里有一些答案,但似乎你的问题仍然没有得到完全回答。我刚刚创建了一个简单的项目,运行代码,它对我有用。 :)

也许您已跳过其中一个步骤:

1)将代码复制到本地javascript文件中。 我将我的名字命名为“index.js”,并在其中放入原始代码片段的简化版本:

var cron = require('node-schedule');

cron.scheduleJob('*/1 * * * * *', function() {
    console.log('This runs every second FROM NODE SCHEDULE');
});

2)创建一个用于管理依赖库的package.json文件。 创建此文件的一种简单方法是运行npm init并按照命令提示符中的交互式问题进行操作。

3)安装node-schedule并将其保存到package.json 您可以通过运行此命令来执行此操作: npm install node-schedule --save

4)运行您的javascript文件。

我运行了这个命令: node index.js

此外,这是我运行该文件并将其登录到控制台的视频:

https://vimeo.com/208851066

请注意,为了便于说明和测试,我将cron安排为每秒运行一次。为了让它每分钟运行一次,cron表达式将是: '0 * * * * *'

修改

如果要从另一个javascript文件中调用此文件,只需将此节点计划代码包装在您的其他javascript文件可见的函数中。 以下是Es5语法中的示例:

index.js

var cron = require('node-schedule');

module.exports = function beginCron() {
    cron.scheduleJob('*/1 * * * * *', function () {
        console.log('This runs every second FROM NODE SCHEDULE');
    });
};

app.js

var beginCron = require('./index.js');

beginCron();

然后我们可以运行app.js并看到它开始执行cron执行:node app.js