Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在将对象加载到调度程序小部件时使浏览器挂起_Javascript_Jquery_Ajax_Dhtmlx Scheduler - Fatal编程技术网

Javascript jQuery在将对象加载到调度程序小部件时使浏览器挂起

Javascript jQuery在将对象加载到调度程序小部件时使浏览器挂起,javascript,jquery,ajax,dhtmlx-scheduler,Javascript,Jquery,Ajax,Dhtmlx Scheduler,我正在使用DHTMLX调度程序。基本上,我所做的是向服务器发出AJAX GET请求,以获取我的数据,然后使用其方法addEvent()加载事件。所以我有相当多的数据要加载到调度器上,我知道这需要时间。我可以将20到2500个事件添加到调度程序中,我使用个性化查询服务器来优化每个视图上的请求。GET/AJAX请求不花时间。但是在日历中加载事件需要很长时间,而且不仅需要很长时间,而且会冻结浏览器。我以为事件正在加载,但没有显示,因为它太慢了,所以我创建了一个进度条。但是我后来意识到浏览器在执行循环时

我正在使用DHTMLX调度程序。基本上,我所做的是向服务器发出AJAX GET请求,以获取我的数据,然后使用其方法addEvent()加载事件。所以我有相当多的数据要加载到调度器上,我知道这需要时间。我可以将20到2500个事件添加到调度程序中,我使用个性化查询服务器来优化每个视图上的请求。GET/AJAX请求不花时间。但是在日历中加载事件需要很长时间,而且不仅需要很长时间,而且会冻结浏览器。我以为事件正在加载,但没有显示,因为它太慢了,所以我创建了一个进度条。但是我后来意识到浏览器在执行循环时挂起,所以我甚至看不到我实现的微调器。查看实际加载的事件和微调器的唯一方法是添加断点,如下所示:

有人能帮我吗?有没有办法让我的代码更好,或者至少让微调器在加载事件时显示出来?那么用户知道发生了什么?当我在for each中添加一个console.log时,我也可以在控制台中看到它在递增,而且速度非常快,考虑到在1秒到35秒之间可能需要大量数据,我对此没有意见,我只是希望它不要挂起

这是我的密码:

$.each( data, function( key, event ) {

  var eventObj = scheduler.getEvent(event.Activity_Id_int);
  var type = typeof(me.scheduler.getEvent(event.Activity_Id_int));

  if(typeof(me.scheduler.getEvent(event.Activity_Id_int)) === 'undefined')
  {
           var text;
           if(event.Titre != null)      
              text = event.Titre + " " + event.Ressource + '-' + event.Employe;      
           else
              text = event.Ressource + ' - ' + event.Employe;

            me.scheduler.addEvent({
               id: event.Activity_Id_int,
                 start_date: Global.formatDateTime(event.Local_Start_DateTime),
                 end_date:   Global.formatDateTime(event.Local_End_DateTime),
                 text : text,                       
                 color: Global.RandGandB_To_SchedulerRGB(event.Color_R,event.Color_G,event.Color_B),
                 desc_act : event.Desc_Act,
                 priorite: event.Priorite,
                 ressource_id: event.Resource_Id,
                 ressource_name: event.Ressource,
                 textColor: "black"

             });

  }
  n++;      
  progress.update(n/data.length * 100);   
  console.log("Loading these events y'all");  });

另外,在更改视图时,我只检查请求中的事件是否已加载,而不是完全清除事件,这会极大地提高性能,但即使我没有添加任何事件,它仍然悬而未决。如果我回到一个我已经加载了所有事件的视图。

< P>我会考虑使用循环的$$。每个都用于更快的性能。 您可以查看此链接以查看差异:

阵列中有多少个事件?API是否允许添加事件数组而不是单个事件?一个可能会重新绘制整个UI,一系列事件可能会在内部以不同的方式处理感谢@charlietfl的评论,我将对此进行研究,这可能是一个有效的解决方案。我找到了一个通过数组加载的函数,现在它速度非常快,唯一的问题是我仍然看不到我的微调器。我想我不能拥有全部。谢谢for循环相对于循环内部发生的事情的性能增益将完全可以忽略不计