1
我正在嘗試使用Google日曆API編寫我的第一個本地JS承諾。我已經精簡了Google Calendar API的JavaScript快速入門代碼,並將它從我的日曆中返回給我一個包含10個對象的數組作爲「事件」。我試圖,在香草JS中,使該API調用一個承諾,然後,當它被解析,做一些與數據(爲簡單起見,我只是想console.log它)。Google日曆API和JS承諾
這是基本的G-Calendar API調用代碼。
var CLIENT_ID = 'SUPER_SECRET_ID_GOES_HERE';
var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"];
function checkAuth() {
gapi.auth.authorize(
{
'client_id': CLIENT_ID,
'scope': SCOPES.join(' '),
'immediate': true
}, handleAuthResult);
}
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
loadCalendarApi();
}
}
function loadCalendarApi() {
gapi.client.load('calendar', 'v3', listUpcomingEvents);
}
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;
// console.log(events)
// return(events)
// these are the event objects I want my promise to
})
}
現在我知道了一個原生JS承諾的基本結構看起來是這樣的......
function testPromise() {
var p1 = new Promise(
function(resolve, reject) {
//Google-Calendar-API-Call Goes Here
}
);
p1.then(
function(val) {
console.log(val)
})
.catch(
function(reason) {
console.log('Handle rejected promise (' + reason + ') here.');
});
}
我已經打過電話決心(loadCalendarApi)的一些不同的方式和/或解決(listUpcomingEvents),但沒有得到任何東西給控制檯日誌。
我在做什麼錯,我應該如何正確使用Google-Calendar API的承諾?
嘿劉若英!感謝你的回答。你的代碼幫了我很多。 你寫的承諾完美無缺。爲了使它正常工作,我還必須更改'loadCalendarApi'函數。它目前使用的承諾像這樣:)) 'VAR loadCalendarApi =功能({ gapi.client.load( '日曆', 'V3',功能({ listUpcomingEvents(),然後(函數(事件。 ){ console.log(events) })。catch(function(err){ console.log(「ERROR」,err) }); }); }' – JavaFish