【发布时间】:2018-05-03 16:17:20
【问题描述】:
我正在尝试获取外部事件之一并将其打印出来。当然,“答案”变量范围仅在内部。
如您所见,它获取了存储在特定日历上的所有事件的列表。我能够访问数组中的特定事件。然而。我不知道如何从中获得这一价值。
我对编码不太熟悉,不胜感激。
//my question is just above the last line.
let google = require('googleapis');
let privatekey = mypk.json;
// configure a JWT auth client
let jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
['https://www.googleapis.com/auth/calendar']);
//authenticate request
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log("Successfully connected!");
}
});
let calendar = google.calendar('v3');
calendar.events.list({
auth: jwtClient,
calendarId: 'xxxxx@group.calendar.google.com'
}
, function (err, response, cb) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
var events = response.items;
var singleEvent = events[0].summary;
return;
/* if (events.length == 0) {
console.log('No events found.');
} else {
console.log('Event from Google Calendar:');
for (let event of response.items) {
console.log('Event name: %s, Creator name: %s, Create date: %s', event.summary, event.creator.displayName, event.start.date);
}
}*/
}
);
//this is what I need to get, one event but the variable has no scope here.
console.log ('this is the ' + singleEvent);
【问题讨论】:
-
问题是
calendar.events.list()是异步的。这意味着它将触发对 google 的请求,然后继续执行脚本。它将运行console.log(),然后在谷歌响应之后的某个时间,您的回调将被触发,您将尝试设置一个变量。您需要将singleEvent传递给另一个函数inside 您的回调或直接处理回调中的事件。另见:stackoverflow.com/questions/14220321/…
标签: javascript scope global-variables