关于此示例: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
})
);
编辑:对代码进行小修正。