函数return空数组
Function return empty array
我有一个 javascript 函数需要 return 一个数组。在里面,我有另一个将值推送到数组的函数。那么它应该 return 数组。
function getFreeBusy(calID, date) {
var array = [];
gapi.client.load('calendar', 'v3').then(function () {
var request = gapi.client.calendar.freebusy.query({
"timeMin": '' + date + 'T08:00:00-00:00',
"timeMax": '' + date + 'T18:00:00-00:00',
"timeZone": "Europe/Rome",
"items": [
{
"id": calID
}
]
});
request.execute(function (data) {
for (var c = 0; c < data.calendars[calID].busy.length; c++) {
var timeStart = data.calendars[calID].busy[c].start.split('T')[1].split(':00+')[0];
var timeEnd = data.calendars[calID].busy[c].end.split('T')[1].split(':00+')[0];
array.push(timeStart, timeEnd);
}
});
});
return array;
};
但它 return 只是一个空数组。
var array = getFreeBusy(CALENDAR_ID, $("#data").val());
console.log(array);
request.execute
是 asynchronous
函数。所以你需要使用callback
函数来return
函数中的数据。
function getFreeBusy(calID, date, callback) {
// ^^^^^^^^^
var array = [];
gapi.client.load('calendar', 'v3').then(function() {
...
...
request.execute(function(data) {
for (var c = 0; c < data.calendars[calID].busy.length; c++) {
var timeStart = data.calendars[calID].busy[c].start.split('T')[1].split(':00+')[0];
var timeEnd = data.calendars[calID].busy[c].end.split('T')[1].split(':00+')[0];
array.push(timeStart, timeEnd);
}
////////////
if (callback) {
callback(array)
}
////////////
});
});
};
var array = getFreeBusy(CALENDAR_ID, $("#data").val(), myCallback);
// ^^^^^^^^^^
function myCallback(array) {
console.log(array);
}
我有一个 javascript 函数需要 return 一个数组。在里面,我有另一个将值推送到数组的函数。那么它应该 return 数组。
function getFreeBusy(calID, date) {
var array = [];
gapi.client.load('calendar', 'v3').then(function () {
var request = gapi.client.calendar.freebusy.query({
"timeMin": '' + date + 'T08:00:00-00:00',
"timeMax": '' + date + 'T18:00:00-00:00',
"timeZone": "Europe/Rome",
"items": [
{
"id": calID
}
]
});
request.execute(function (data) {
for (var c = 0; c < data.calendars[calID].busy.length; c++) {
var timeStart = data.calendars[calID].busy[c].start.split('T')[1].split(':00+')[0];
var timeEnd = data.calendars[calID].busy[c].end.split('T')[1].split(':00+')[0];
array.push(timeStart, timeEnd);
}
});
});
return array;
};
但它 return 只是一个空数组。
var array = getFreeBusy(CALENDAR_ID, $("#data").val());
console.log(array);
request.execute
是 asynchronous
函数。所以你需要使用callback
函数来return
函数中的数据。
function getFreeBusy(calID, date, callback) {
// ^^^^^^^^^
var array = [];
gapi.client.load('calendar', 'v3').then(function() {
...
...
request.execute(function(data) {
for (var c = 0; c < data.calendars[calID].busy.length; c++) {
var timeStart = data.calendars[calID].busy[c].start.split('T')[1].split(':00+')[0];
var timeEnd = data.calendars[calID].busy[c].end.split('T')[1].split(':00+')[0];
array.push(timeStart, timeEnd);
}
////////////
if (callback) {
callback(array)
}
////////////
});
});
};
var array = getFreeBusy(CALENDAR_ID, $("#data").val(), myCallback);
// ^^^^^^^^^^
function myCallback(array) {
console.log(array);
}