无法在模块中执行回调,使用 Node-Cron导出对象
Not able to execute callbacks in module.exports object using Node-Cron?
所以我每天晚上使用一个名为node-cron的模块来执行一系列函数。
我的函数位于另一个文件中。 我已经在我的应用程序中添加了该文件required
.js节点 cron 对象所在的位置。 该对象如下所示
var job = new CronJob('00 51 17 * * 0-6', savantJS.getTracksFromSavants, null, true, 'America/Los_Angeles');
这将在洛杉矶时间下午 5:51 在我的 savantJS 文件中执行 getTracksFromSavants
函数。 但是,当我尝试在我的 savantJS 文件中具有回调函数时,会出现问题。
例如:
module.exports = {
getTracksFromSavants: function(){
//do stuff here with arr
if(stuff happens here){
this.doNextFunction(arr)
}
},
doNextFunction: function(arr){
//do stuff
}
}
这很好地执行了getTracksFromSavants
函数,但是一旦它到达if
它就会说doNextFunction
没有定义。
另一方面,如果我这样写我的 Cron:
var job = new CronJob('00 51 17 * * 0-6', savantJS.getTracksFromSavants(), null, true, 'America/Los_Angeles');
它执行回调getTracksFromSavants()
很好。 但是,问题是,当我在 CronJob 对象中使用 ()
时,每次服务器启动时,它都会执行该功能,而它应该只在下午 5:51 执行它。
有什么想法吗?
var obj = {
f: function() {
return this;
}
}
obj.f() // returns obj
var ff = obj.f;
ff(); // does not return obj - `ff` does not know the function came from `f`.
ff = ff.bind(obj);
ff(); // returns obj again
在 JavaScript 中,使用点表示法调用方法将设置 this
。 调用不带点的方法不会。当您将savantJS.getTracksFromSavants
传递到函数中时,它将成为某个参数;当该参数被调用时,它不知道它与savantJS
有任何联系。除非您将接收器绑定到它。
因此,您希望将方法调用包装在一个普通函数中(不依赖于作为方法调用):
var job = new CronJob('00 51 17 * * 0-6', function() {
savantJS.getTracksFromSavants();
}, null, true, 'America/Los_Angeles');
或者你可以将函数绑定到接收器(它基本上做同样的事情):
var job = new CronJob('00 51 17 * * 0-6',
savantJS.getTracksFromSavants.bind(savantJS),
null, true, 'America/Los_Angeles');
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- node.js使用monk从数组中按id获取文档
- Node.js使用派生两个子进程,然后两个子进程如何相互交换
- 从 Node.JS使用 MailGun 发送 HTML 电子邮件
- 如何让node.js使用CFML风格的#hashed#变量
- 强制node.js使用OpenSSL的非发行版副本
- Node.js-使用async lib-async.parallel传递一个数组
- Node.js使用async函数返回的对象
- 从Node中使用Breeze.js EntityManager
- Node.js使用Express和Mongoose设置Passport的问题
- Node js使用从request/request-api调用返回的数据
- node.js 使用 function.prototype.apply 执行的泛型函数
- 如何在 Node 中使用 Passport.js 模拟其他用户
- Node.js使用 Socket.io 的应用程序在OpenShift主机上给出“意外响应代码:400”
- Node.js - 使用 NVM 配置 $NODE_PATH
- 无法在模块中执行回调,使用 Node-Cron导出对象
- 将 JQuery 与 Node 一起使用.js“ReferenceError: $ 未定义”
- 在 node 中使用中间件与 express 和 connect 的最常见方法是什么?
- 将图像上传到 Node.js使用 multer 不起作用
- 将node-cron与coffeescript结合使用