複数の要求を送信した後に関数を呼び出そうとしています。 loadEventsFromCalendar
関数は、各カレンダーのイベントデータへのアクセス要求を送信し、json_event_list
に格納します。 renderTimeline
関数はこの大きなリストを取り、それに基づいてビジュアライゼーションを描画します。複数の非同期関数呼び出しの後にjavascript関数を実行する
function loadFromAllCalendars(calendarNames){
var dfd_lst=[];
//Load events from all selected calendars
for (var i =0; i<calendarNames.length;i++){
dfd_lst.push(loadEventsFromCalendar(calendarNameIds[calendarNames[i]],calendarNames[i]));
}
$.when.apply($,dfd_lst).done(renderTimeline);
}
function loadEventsFromCalendar(calendarId,calendarName) {
var dfd = $.Deferred();
// Add events from calendar corresponding to the given calendarId into json_event_lst.
var request = gapi.client.calendar.events.list({
'calendarId': calendarId,
'timeMin': startdate.toISOString(),
'showDeleted': false,
'singleEvents': true,
'maxResults': 50,
'orderBy': 'startTime'
});
request.execute(function(resp) {
....data processing of json_event...
json_event_lst.push(json_event)
dfd.resolve();
return dfd.promise()
});
}
私は約束が満たされているかどうかを確認するためにjqueryの繰延オブジェクトを使用して試してみましたが、データアレイが読み込まれる前にrenderTimeline機能がまだ呼び出されます。
はrenderTimeline'パラメータが渡されることを期待し 'ていますか? – guest271314