所以我使用一個叫做node-cron的模塊來每天晚上執行一系列函數。無法使用Node-Cron在module.exports對象中執行回調?
我的功能位於另一個文件中。我在我的app.js中添加了required
那個文件,其中node-cron Object所在的位置。該對象看起來像這樣
var job = new CronJob('00 51 17 * * 0-6', savantJS.getTracksFromSavants, null, true, 'America/Los_Angeles');
這將在下午5點51分LA時間就好在我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 pm執行。
任何想法?
你可以在調用'doNextFunction'之前檢查'this'嗎? –
@TuanAnhTran'this'指的是module.exports對象......我想。我可以證實這一點,因爲當我設置函數在cron中執行到'savantJS.getTracksFromSavants()'時,回調函數可以正常工作,因爲回調函數'this.doNextFunction'可以正常工作。 –