使用 Cron 快速返回 Node.js 中的值
Returning A Value In Node.js Express Using Cron
我已经正确安装了 Cron 和所有东西,但是我无法访问 return 从节点应用程序的其余部分中的该函数编辑的值。
基本功能:
module.exports.myFunction = function() {
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
return a + b;
}, function () {
},
true
);
}
我认为 return 在此处输入值然后使用我的一个路由文件中的承诺访问它会起作用,但它始终 returns TypeError: Cannot read property 'then' of undefined
,这表示 undefined
正在从函数传递。
这是我的路线文件中的代码:
Tester.myFunction()
.then(function(data) {
console.log("Done!");
console.log(data);
req.flash('success', "You have successfully started the software!");
res.render('dashboard');
})
.catch(function(err) {
console.log(err);
})
由于这不起作用,我如何才能在使用 Cron 时正确地 return 来自函数的值?感谢您的帮助!
您需要 return 来自 myFunction
的 Promise
来解析您当前 returning 的数据,如下所示:
module.exports.myFunction = function() {
return new Promise((resolve, reject) => {
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
resolve(a + b);
}, function() {},
true
);
})
}
但是,由于 cron 可以 运行 多次,但 promise 只解析一次,您也可以使用 EventEmitter
.
按如下方式更改您的 myFunction
:
module.exports.myFunction = function() {
const myFnEventEmitter = new(require('events').EventEmitter)();
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
myFnEventEmitter.emit('started', a + b)
}, function() {},
true
);
return myFnEventEmitter;
}
在你使用它的地方,做:
const myFnEventEmitter = Tester.myFunction();
myFnEventEmitter.on('started', data => {
console.log("Done!");
console.log(data);
req.flash('success', "You have successfully started the software!");
res.render('dashboard');
})
我已经正确安装了 Cron 和所有东西,但是我无法访问 return 从节点应用程序的其余部分中的该函数编辑的值。
基本功能:
module.exports.myFunction = function() {
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
return a + b;
}, function () {
},
true
);
}
我认为 return 在此处输入值然后使用我的一个路由文件中的承诺访问它会起作用,但它始终 returns TypeError: Cannot read property 'then' of undefined
,这表示 undefined
正在从函数传递。
这是我的路线文件中的代码:
Tester.myFunction()
.then(function(data) {
console.log("Done!");
console.log(data);
req.flash('success', "You have successfully started the software!");
res.render('dashboard');
})
.catch(function(err) {
console.log(err);
})
由于这不起作用,我如何才能在使用 Cron 时正确地 return 来自函数的值?感谢您的帮助!
您需要 return 来自 myFunction
的 Promise
来解析您当前 returning 的数据,如下所示:
module.exports.myFunction = function() {
return new Promise((resolve, reject) => {
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
resolve(a + b);
}, function() {},
true
);
})
}
但是,由于 cron 可以 运行 多次,但 promise 只解析一次,您也可以使用 EventEmitter
.
按如下方式更改您的 myFunction
:
module.exports.myFunction = function() {
const myFnEventEmitter = new(require('events').EventEmitter)();
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
myFnEventEmitter.emit('started', a + b)
}, function() {},
true
);
return myFnEventEmitter;
}
在你使用它的地方,做:
const myFnEventEmitter = Tester.myFunction();
myFnEventEmitter.on('started', data => {
console.log("Done!");
console.log(data);
req.flash('success', "You have successfully started the software!");
res.render('dashboard');
})