1

我已经编写了以下代码以在我的角度中获得每日重复,我的问题是当我使用RRule JS 的 byweekday属性时,应用程序卡住并且根本没有响应。有时它确实有效,但需要大量时间来在线执行代码#rrule_after。请让我知道为什么会发生这种情况以及有什么更好的解决方案?

function getNextRecurrenceDate(recurrenceVo,rule){
     var startDate = new Date(recurrenceVo.recurrenceRangeVO.startDate);
     var today = new Date();
     var calculatedDate = null;
     if(today.getTime() <= startDate.getTime()){
         return startDate;
     }else{
         //#rrule_after - when I debug the code and comes to this function execution, my application stucks/halts for long time and does not response at all
         calculatedDate = rule.after(today,true);
        // this is temporary code I have written to overcome the problem of daily weekday recurrence 
       if(calculatedDate && recurrenceVo.dailyRecurrenceVO && recurrenceVo.dailyRecurrenceVO.everyWeekDay && calculatedDate.getDay() > 4){
             calculatedDate.setDate(calculatedDate.getDate() + (7 - calculatedDate.getDay()));
         }
     }
     return (calculatedDate)?calculatedDate:'';
 }

 function getDailyNextRecurrenceDate(recurrenceVo){
     var rule = new RRule({
          freq: RRule.DAILY,
          interval: recurrenceVo.dailyRecurrenceVO.numberofDays,
          dtstart: new Date(recurrenceVo.recurrenceRangeVO.startDate)
     })
     if(recurrenceVo.recurrenceRangeVO.endCount){
         rule.options.count = recurrenceVo.recurrenceRangeVO.endCount;
     }
     if(recurrenceVo.dailyRecurrenceVO.everyWeekDay){
        rule.options.interval = 1;
        // When I remove this code then all working fine and application not halting at all
        rule.options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR]
     }
     if(recurrenceVo.recurrenceRangeVO.endDate){
         rule.options.until = new Date(recurrenceVo.recurrenceRangeVO.endDate);
     }
     var nextRecDate = getNextRecurrenceDate(recurrenceVo,rule);
     return nextRecDate?nextRecDate.setHours(0,0,0,0):'';
 }
4

0 回答 0