Я даю пользователям возможность загружать несколько файлов в форму. Интерфейс загрузки обрабатывается виджетом Cloudinary. Затем я хочу передать в бэкэнд массив с URL загруженных файлов, чтобы сохранить его в базе данных.
К сожалению, кажется, что код работает синхронно, поэтому, как только первая загрузка заканчивается, его URL-адрес помещается в массив, и код останавливается, не дожидаясь, пока другие файлы будут помещены в массив. Мне только удалось установить функцию setTimeout, но я признаю, что это обходной путь.
$(document).ready(function () {
var myWidget = cloudinary.createUploadWidget({
cloudName: 'mycloudinaryaccountname',
uploadPreset: 'ml_default'}, (error, result) => {
if (!error && result && result.event === "success") {
console.log('Done! Here is the image info: ', result.info);
fileArray = [];
setTimeout(() => {
fileArray.push(result.info.url)
console.log(fileArray)
}, 2000);
$('#valueUpload').val(fileArray);
}
}
)
document.getElementById("upload_widget").addEventListener("click", function(e){
e.preventDefault();
myWidget.open();
}, false);
})