Hi Mobarak,
Try loading your data in a local variable before loading the calendar widget.
For example: Add a local boolean variable called IsDataLoaded (Default: False). Add an If-Statement and put the FullCalendar widget in the if-statement so the widget only loads when the boolean is true. After fetching all your data. Change the IsDataLoaded boolean to true. And it should do the job.
The downside of this way is that if you want to refetch your data. You need to reload the FullCalendar widget. If not, the new events will not be loaded in your calendar and you're stuck with your old initial data.
UPDATE:
You could also create REST calls. REST calls is in my opinion the best way to show your data. It gives the option to refetch your data without refreshing the whole calendar. Only the events part of the calendar. You'll be able to refetch your events using RefetchEvents action and you can load your data in the FullCalendar widget using the NewEventSourceUrl function (Can be used in expressions).
Hope this helps a bit more.
Regards,
Bo