以下功能是javascript中Google Calendar API快速入门示例的略微改编版本。 我已对其进行了更改,以便循环访问代码,以便从帐户中的所有日历中获取事件。我遇到的问题是,无论使用回调还是承诺,数组都会返回空,除非我将console.log延迟几秒钟以便该函数完成它的任务。 我试图遵循应用承诺和回调的各种例子,但我必须错过一些东西,因为他们似乎没有按预期工作。
抱歉,如果它有些愚蠢,我很想念!
function listUpcomingEvents() {
dateEnd.setDate(dateEnd.getDate() + 6); // load from now till 6 days from now worth of events
var eventArray = [];
for (i1 = 0; i1 < calendarIDs.length; i1++) {
gapi.client.calendar.events.list({
'calendarId': calendarIDs[i1].ID,
'timeMin': date.toISOString(),
'showDeleted': false,
'singleEvents': true,
'timeMax': dateEnd.toISOString(),
'orderBy': 'startTime'
}).then(function(response) {
var events = response.result.items;
if (events.length > 0) {
for (i2 = 0; i2 < events.length; i2++) {
var event = events[i2];
var when = event.start.dateTime;
if (!when) {
when = event.start.date;
}
var eventObject = {User:event.organizer.displayName, Location:event.location,Summary: event.summary,Date: when};
eventArray.push(eventObject);
appendPre(event.organizer.displayName + event.location + event.summary + ' (' + when + ')');
} //for loop events within a calendar
} //if statement
}); //promise
} //for loop for calendars
return eventArray;
} //function end