JQuery + Fullcalendar - большое количество итераций с объектом jquery

0

Я пытаюсь сделать большое количество событий (около 50, и может быть больше).

                    for (var eventIndex = 0; eventIndex < resp.select_events.length; eventIndex++){
                    var event = resp.select_events[eventIndex];
                    c.fullCalendar('renderEvent',{
                        id: event.id,
                        title: eventName,
                        start: event.event_date,
                        description: eventDesc,
                        write: event.write
                    },true);
                }

Это занимает несколько секунд, и иногда браузер спрашивает меня о прекращении выполнения сценария. Итак, я думаю, мне нужен способ сделать это как-то вроде async-parrallel с исполнением последней части скрипта. Можете ли вы посоветовать какой-нибудь инструмент или что-то в этом роде Спасибо

  • 0
    Вы должны сделать один за другим? Почему бы вам сначала не установить массив, такой как массив JSON, и добавить его в eventSources?
Теги:
fullcalendar

2 ответа

0
Лучший ответ

Вы должны отображать один за другим? Почему вы не устанавливаете сначала массив, как массив JSON, и добавляете его в eventSources? Лучший способ для вашего календаря отображать большое количество событий - позволить Fullcalendar выполнить эту работу за вас. Вы пытаетесь, с моей точки зрения, делать то, что внутренне уже делает полный календар. Посмотрите пример ниже, и это, если вам нужно сделать эту клиентскую сторону, я бы сделал эту серверную часть.

          var jsonarray = [];    
          for (var eventIndex = 0; eventIndex < resp.select_events.length; eventIndex++){

               /* c.fullCalendar('renderEvent',{
                    id: event.id,
                    title: eventName,
                    start: event.event_date,
                    description: eventDesc,
                    write: event.write
                },true);*/
               var event = resp.select_events[eventIndex];
               var myevent = {
                    "id": event.id,
                    "title": eventName,
                    "start": event.event_date,
                    "description": eventDesc,
                    "write": event.write
               }; 
               jsonarray.push(myevent); 
            }

            c.fullCalendar('addEventSource', jsonarray);

Пусть они знают, есть ли у вас какие-либо сомнения

  • 0
    спасибо, я только сейчас нахожу этот путь) Я понятия не имею, что этот путь намного быстрее) Я думаю, разработчик должен упомянуть об этом в документации)
  • 0
    Я думаю, он упомянул кое-что ... рад, что смог помочь. Кстати, вы должны выполнять этот процесс на стороне сервера, а не на стороне клиента, просто передайте уже созданный массив json от сервера к клиенту, и вы просто выполните функцию addEventSource на стороне клиента, потому что вы не знаете вычислительную мощность каждого пользовательского компьютера;)
0

Модификация самого цикла может помочь в некоторой степени. Прочтите эту статью http://jsperf.com/fastest-array-loops-in-javascript/11

Также этот https://blogs.oracle.com/greimer/entry/best_way_to_code_a

В общем самом быстром способе для вашей циклы в while цикл в обратном направлении, с упрощенным условием проверки:

var i = arr.length; while (i--) {/*....*/}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню