【发布时间】:2018-07-28 14:55:28
【问题描述】:
我已经正确安装了 Cron 和所有内容,但在我的节点应用程序的其余部分中访问从该函数返回的值时遇到问题。
基本功能:
module.exports.myFunction = function() {
var job = new CronJob('00 0-59 * * * *', function() {
var a = 5;
var b = 2;
return a + b;
}, function () {
},
true
);
}
我认为在此处返回值,然后在我的一个路由文件中使用 promise 访问它会起作用,但它始终返回 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 时正确地从函数返回值?感谢您的帮助!
【问题讨论】:
-
你需要返回一个 Promise。
-
@Li357 我知道,我只是不知道在 Cron 函数中返回该承诺的正确方法。我尝试了
return语句的不同定位,但它们都不起作用。 -
你想让
data成为什么? -
你需要更清楚你想要做什么。您是否想要在安排 cron 作业时解决承诺的行为 - 这没问题。或者您是否想要 cron 作业运行时的
then()行为。这更有问题。您将无法从此函数返回值,因为您没有调用该函数。 cron 模块正在调用该函数。而且返回一个 Promise 是没有意义的,因为它可能会被多次调用,但 Promise 只会触发一次。 -
@Li357 我希望
data为7,返回值为a + b。
标签: node.js express cron return cron-task