Обратный вызов, установленный в .setCallback()
, вызывается не один раз, а каждый раз, когда происходит изменение с помощью сборщика.Это предназначено для того, чтобы позволить разработчику настроить определенные действия для определенных событий в рабочем процессе Picker.
В данном случае нет ничего, что действительно нужно делать с сохраненными действиями 'cancelled'
или 'loaded'
в data.action
.Реальный, который нас интересует, это 'picked'
.Это означает, что пользователь выбрал что-то в Picker.(Файл, папка, дружественный инопланетянин и т. Д.)
Нам просто нужно обернуть тело обработчика обратного вызова простым оператором if, подобным этому:
function pickerCallback(data){
if(data.action === 'picked'){
....... do some things ......
}
}
С этим первымобратный вызов должен выглядеть следующим образом и гарантирует, что второй сборщик не будет отображаться до того, как первый использовался / был утилизирован.
function fileSelectedCallback(fileData) {
console.log('FileSelectedCallback(): File Data: ', fileData);
if(fileData.action === 'picked'){
const folderPicker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsView()
.setIncludeFolders(true)
.setMimeTypes('application/vnd.google-apps.folder')
.setSelectFolderEnabled(true))
.setOAuthToken(gapi.client.getToken().access_token)
.setCallback((data) => folderSelectedCallback(data, fileData))
.build();
folderPicker.setVisible(true);
}
}