谷歌日历javascript api-添加多个事件
当我试图通过JavaScriptV3API向Google日历添加多个事件时,我遇到了一个问题 我有一个数组,其中的条目是如下事件: 之后,我调用Google Calendar api以添加事件:谷歌日历javascript api-添加多个事件,javascript,google-api,google-calendar-api,Javascript,Google Api,Google Calendar Api,当我试图通过JavaScriptV3API向Google日历添加多个事件时,我遇到了一个问题 我有一个数组,其中的条目是如下事件: 之后,我调用Google Calendar api以添加事件: var request; for(var j = 0; j<events.length; j++) { console.log(events[j]); request = gapi.client.calendar.events.insert({ 'calendarId': ca
var request;
for(var j = 0; j<events.length; j++) {
console.log(events[j]);
request = gapi.client.calendar.events.insert({
'calendarId': calendarId,
'resource': events[j]
});
request.execute(function(resp) {
console.log(resp);
});
}
var请求;
for(var j=0;j事件[j]
在for循环的每次迭代中都会反弹。请尝试使用匿名函数绑定到正确的事件:
var request;
for(var j = 0; j<events.length; j++) {
console.log(events[j]);
request = function(resource) { // Function that returns a request.
return gapi.client.calendar.events.insert({
'calendarId': calendarId,
'resource': resource
});
}(events[j]); // Bind to the current event.
request.execute(function(resp) {
console.log(resp);
});
}
var请求;
对于(var j=0;j如果要同时插入多个事件,则应使用批处理
var batch = gapi.client.newBatch();
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[0]
}));
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[1]
}));
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[2]
}));
......
batch.then(function(){
console.log('all jobs done!!!')
});
如上所述,您需要使用批处理来添加多个事件
为什么批处理?
使用批处理API的主要原因是减少网络开销,从而提高性能
示例:
createMultipleEvents() {
const events = [ {
'summary': 'sample test events1',
'location': 'coimbatore',
'start': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
},
'end': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
}
},
{
'summary': 'sample test events2',
'location': 'coimbatore',
'start': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
},
'end': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
}
},
];
const batch = gapi.client.newBatch();
events.map((r, j) => {
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[j]
}))
})
batch.then(function(){
console.log('all jobs now dynamically done!!!')
});
}
谢谢,这至少有助于阅读更多关于javascript中闭包和变量边界的内容。然而,我只是在绑定事件之后才解决了这个问题[j]在循环中,也因为我没有为每个创建的事件创建新的日期,相反,我只是在每个循环中更新相同的变量,并且由于某些原因,它没有按预期工作。无论如何,再次感谢!如何动态添加这些事件?
var batch = gapi.client.newBatch();
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[0]
}));
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[1]
}));
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[2]
}));
......
batch.then(function(){
console.log('all jobs done!!!')
});
createMultipleEvents() {
const events = [ {
'summary': 'sample test events1',
'location': 'coimbatore',
'start': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
},
'end': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
}
},
{
'summary': 'sample test events2',
'location': 'coimbatore',
'start': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
},
'end': {
'date': '2018-08-29',
'timeZone': 'America/Los_Angeles'
}
},
];
const batch = gapi.client.newBatch();
events.map((r, j) => {
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': events[j]
}))
})
batch.then(function(){
console.log('all jobs now dynamically done!!!')
});
}