如何检查 google 日历 api 请求是否已完成?

How to check if google calendar api request has finished?

这是官方 Google 日历 api 示例的一部分。此代码异步执行,这意味着如果我在下面放置一个使用接收到的数据的函数,它会在获得所需结果之前启动。如何确保请求已完成其工作并准备好结果?谢谢

    function listUpcomingEvents() {
    var request = gapi.client.calendar.events.list({
      'calendarId': 'primary',
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'maxResults': 10,
      'orderBy': 'startTime'
    });

    request.execute(function(resp) {
      var events = resp.items;
      appendPre('Upcoming events:');

      if (events.length > 0) {
        for (i = 0; i < events.length; i++) {
          var event = events[i];
          var when = event.start.dateTime;
          if (!when) {
            when = event.start.date;
          }
          appendPre(event.summary + ' (' + when + ')')
        }
      } else {
        appendPre('No upcoming events found.');
      }

    });
  }

创建您自己的函数

myEvents(events){
  // console.log(events);
}

在请求回调中调用

这里的匿名函数是Google日历请求回调。所以当请求完成后,这个函数就会被执行。

function listUpcomingEvents() {

  [...]

  // Google calendar API request
  request.execute(function(resp) {
    // Google calendar API request has finished
    var events = resp.items;
    appendPre('Upcoming events:');

    if (events.length > 0) {
      for (i = 0; i < events.length; i++) {
        var event = events[i];
        var when = event.start.dateTime;
        if (!when) {
          when = event.start.date;
        }
        appendPre(event.summary + ' (' + when + ')')
      }
    } else {
      appendPre('No upcoming events found.');
    }

    // Here, you're function call
    myEvents(events)

  });
}