Я хочу использовать Google Drive Javascript API , чтобы получить все видеофайлы в определенной папке и ее подпапках.После того, как список сгенерирован, я хочу вызвать другую функцию для форматирования и отображения данных (эта часть работает нормально).
Я понимаю, что Drive API поддерживает только поиск непосредственных дочерних элементов, поэтому я должен рекурсивноискать, когда я нажимаю на типы папок.Это нормально.
Проблема, с которой я сталкиваюсь, заключается в том, что все это происходит асинхронно, и я не хочу анализировать или отображать какие-либо данные, пока массив видео не будет полностью заполнен.
Как я могу вызвать функцию только после того, как завершены все рекурсивные вызовы gapi.client.drive.files.list
?
/**
* Get all the video files from the parent folder and child folders
*/
var videos = [];
function listFiles(parentFolder) {
gapi.client.drive.files.list({
'pageSize': 100,
'fields': "nextPageToken, files(id, name, mimeType, thumbnailLink, createdTime, parents)",
'supportsTeamDrives': true,
'orderBy': "createdTime desc",
'includeTeamDriveItems': true,
'q': "'" + parentFolder + "' in parents and trashed = false"
}).then(function(response) {
var files = response.result.files;
if (files && files.length > 0) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
if (file.mimeType.includes("video")) {
videos.push(file);
} else if (file.mimeType.includes("application/vnd.google-apps.folder")){
/* This is the recursive call to get child folder videos */
listFiles(file.id);
}
} else {
appendPre('No files found.');
}
}).then(function(response) {
/* I want to run these only after all recursive calls complete and add videos to videos[] */
updateStats();
displayVideos();
});
}
Как лучше всего продолжить?Вы можете помочь?:)