JavaScript(nodejs):如何从Google日历API回调中获取数据



关于此示例:https://developers.google.com/google-apps/calendar/quickstart/nodejs

我想更改ListEvents以返回事件的JSON数组。

目前称为这样:

authorize(JSON.parse(content), listEvents);

其中" ListEvents"是传递给回调的功能:

function authorize(credentials, callback) {

我尝试在ListEvents添加返回语句,然后以下内容:

var jsonEvents = authorize(JSON.parse(content), listEvents);
console.log("Json Events="); 
console.log(jsonEvents); 

我知道它会在我身上异步,因为我在listEvents函数的Console.Log输出之前获得了上述控制台。我还尝试抛出"等待"的单词,但没有运气。

我尝试在listEvents中设置一个额外的参数:

var jsonEvents; 
authorize(JSON.parse(content), listEvents(jsonEvents));
console.log("Json Events="); 
console.log(jsonEvents); 

导致" TypeError:回调不是函数"。

更新:基于@tuches的答案,我把它起作用了。想知道是否有必要扩展这一范围。

  authorize(JSON.parse(content), function(token) {
      console.log("Got Token"); 
      //console.log(token);
      listEvents(token, function(jsonResult) {
          console.log("Json Callback Events="); 
          console.log(jsonResult); 
      }); 
    });

我对Google日历API不了解,但是快速阅读第二个参数是回调函数。这意味着授权的结果将结束,然后将调用ListEvents。因此,实际上您应该做的是处理此数据返回ListEvents内部的数据,或者您可以修改ListEvents返回回调,例如:

function listEvents(auth, callback) {
    // ... implementation of the function
    // When the function is done an there's data to
    // return, callback the data
    callback(data);
}

这样,您可以通过执行类似的操作来处理ListEvents的返回数据:

authorize(JSON.parse(content), listEvents(data, function(response) {
        console.log(response); // <-- return from listEvents    
    })
);

编辑:对代码进行小修正。

最新更新