异步功能问题

时间:2018-04-10 16:35:12

标签: javascript api asynchronous google-calendar-api

以下功能是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 

0 个答案:

没有答案