Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

307
Vistas
Extraer valor de un DataTransferItem sincrónicamente: ¿qué estoy haciendo (incorrectamente) aquí?

Tengo una función de controlador para el evento de drop que se parece a esto:

 da.addEventListener("drop", function(e) { e.stopPropagation(); var xhr = new XMLHttpRequest(); ... (configure XMLHttpRequest) var fd = new FormData(); [...e.dataTransfer.items].forEach(it => { it.getAsString(value => { console.log(`append ${it.type} ${value}`); fd.append(`${it.type}`, value); }); }); console.log("send"); xhr.send(fd); });

El problema aquí es que send() ocurre antes fd.append() , porque it.getAsString() parece ser asíncrono.

Después de leer algunos artículos sobre devoluciones de llamada, funciones asincrónicas, promesas, etc. Traté de agregarlo en un bloque .then() :

 it.getAsString(value => { return value; }).then(value => { console.log(`append ${it.type} ${value}`); fd.append(`${it.type}`, value); });

Esperaba tener problemas con el value que no se propaga correctamente, pero en cambio obtuve

 Uncaught TypeError: it.getAsString(...) is undefined

E incluso el depurador integrado subraya getAsString .

¿Qué estoy haciendo aquí? ¿Por qué parece que getAsString está definido cuando lo uso sin .then(value => {}) pero funciona correctamente sin .then() ?

En un nivel más abstracto, ¿cómo agregaría correctamente items de un DataTransferItem a una instancia de FormData antes de enviarlo?

Actualizar

Combinar la iteración a través .items y luego usar .getData() funciona para mí, pero no se siente bien.

 [...e.dataTransfer.items].forEach(it => { fd.append(`${it.type}`, e.dataTransfer.getData(it.type)); });
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda