我有一些Javascript,每天都在日落时执行。由于日落时间每天都在变化,因此我会在执行当前日落计时器后为明天设置一个新计时器。
scheduleSunTimer(timer) {
let _timer = timer;
let time = getSunset(new Date(), config.latitude, config.longitude);
schedule.scheduleJob(time, () => {
this.console.log('Timer actived');
// Reschedule for next day
this.scheduleSunTimer(_timer);
});
}
我使用https://github.com/node-schedule/node-schedule/
中的node-schedule
库
此代码有效,但一周后我的应用程序挂起。看起来schedule.scheduleJob
调用scheduleSunTimer
的回调再次创建了一些永不停止的嵌套调用堆栈。这可能会导致内存泄漏,导致我的应用程序崩溃。
我想知道是否有人知道如何避免调用堆栈增长,或者可能知道更好的解决方案/最佳实践。