Я пытаюсь сделать большое количество событий (около 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 с исполнением последней части скрипта. Можете ли вы посоветовать какой-нибудь инструмент или что-то в этом роде Спасибо
Вы должны отображать один за другим? Почему вы не устанавливаете сначала массив, как массив 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);
Пусть они знают, есть ли у вас какие-либо сомнения
Модификация самого цикла может помочь в некоторой степени. Прочтите эту статью 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--) {/*....*/}