Tengo este programa Javascript que cargará imágenes desde mi servidor local para la transferencia de datos, luego asignará sus archivos a mi entrada con tipo de archivo, pero realmente no tengo idea de cómo esperar a que finalice la API de búsqueda antes de ejecutar la última parte del programa. Espero que me puedan ayudar con mi problema porque soy principiante.
function image_select(BHID) { all_fileBuffer[BHID] = new DataTransfer(); //add images from database to filebuffer setTimeout(async function () { $("div#container-"+BHID+" img").each(async function (e) { await fetch($(this).attr('src')) .then(res => res.blob()) .then(blob => { all_fileBuffer[BHID].items.add(new File([blob], $(this).attr('id'), blob)); }) }); }, 1000); all_attachments[BHID] = document.getElementById("image-" + BHID).files; // <-- reference your file input here // append the file list to an array iteratively for (let i = 0; i < all_attachments[BHID].length; i++) { // Exclude file in specified index all_fileBuffer[BHID].items.add(all_attachments[BHID][i]); } document.getElementById('image-' + BHID).files = all_fileBuffer[BHID].files; all_image[BHID] = document.getElementById('image-' + BHID).files; all_images[BHID] = []; for (i = 0; i < all_image[BHID].length; i++) { all_images[BHID].push({ "name": all_image[BHID][i].name, "url": URL.createObjectURL(all_image[BHID][i]), "file": all_image[BHID][i], }) } document.getElementById('container-' + BHID).innerHTML = ""; document.getElementById('container-' + BHID).innerHTML = image_show(BHID); console.log(all_fileBuffer[BHID].files); }No entiendo muy bien qué parte del código necesita usar después de su búsqueda, pero varias funciones asíncronas se manejan así
async function main () { await Promise.all([1, 2, 3].map(x => new Promise((resolve) => setTimeout(resolve, x*1000))) ) console.log('further code') }Así que en tu caso sería algo como esto:
async function imageSelect () { // ... await Promise.all([ $("div#container-"+BHID+" img").map(async function (e) { await fetch($(this).attr('src')) .then(res => res.blob()) .then(blob => all_fileBuffer[BHID].items.add( new File([blob], $(this).attr('id'), blob)); }) ]); console.log('fetch done') // ... }