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

168
Vistas
Problemas al intentar obtener y pasar datos de una promesa

Estoy haciendo un trabajo con un colega, en el que elige ajax para hacer solicitudes a un servicio web, y yo uso fetch para hacer una solicitud a una api externa, me estoy encontrando con un problema y es que al momento de obtener los datos De la api a través de fetch me trae los datos después de cierto tiempo, pero cuando paso esos datos a través de ajax envía la variable vacía, lo cual es lógico porque la respuesta de fetch tarda un tiempo en llenar mi variable, así que qué Lo que intento es poner un setTimeout en el ajax para esperar un tiempo y que se ejecute después de que mi solicitud de búsqueda llene los datos, pero esto no funciona y no realiza ningún proceso:
Este es mi JavaScript:

 $("body").on('click', '#MainContent_lnk_actualizar_foto', e => { e.preventDefault(); let Archivo = $('#MainContent_file_foto')[0].files[0]; let ubicacion = ''; let params = new URLSearchParams(location.search); let Id_Usuario = params.get('Id_Usuario'); const datos = new FormData(); datos.append('imagen', Archivo); datos.append('ubicacion', 'perfil'); fetch(`http://192.168.0.37:52456/api/Archivos/`, { method: 'POST', body: datos }).then(res => res.json()) .catch(error => console.error('Error:', error)) .then(response => { ubicacion = response.lugar }) setTimeout(() => { $.ajax({ type: 'POST', url: 'WebService_V_Perfil.asmx/SubirArchivos', data: '{"Archivo": "' + ubicacion + '","Id_Usuario": "' + Id_Usuario + '"}', contentType: 'application/json; charset=utf-8', dataType: 'json', success: result => { console.log(result); console.log(ubicacion); } }) }, 3000 });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Además de los errores de sintaxis en su código, la única forma en que puede usar los valores que regresan de la llamada de fetch es colocando el código que procesa esos resultados en un bloque then pero dejando el bloque de catch para el final. De lo contrario, en este caso su código no se ejecutará como se esperaba, ya que el segundo bloque then() espera algo que el catch() anterior no devuelve.

 fetch(`http://192.168.0.37:52456/api/Archivos/`, { method: 'POST', body: datos }) .then(res => res.json()) .then(response => { const ubicacion = response.lugar; $.ajax({ type: 'POST', url: 'WebService_V_Perfil.asmx/SubirArchivos', data: '{"Archivo": "' + ubicacion + '","Id_Usuario": "' + Id_Usuario + '"}', contentType: 'application/json; charset=utf-8', dataType: 'json', success: result => { console.log(result); console.log(ubicacion); } }) }) .catch(error => console.error('Error:', error))

Además, no creo que necesite usar ajax para hacer la misma tarea que hace fetch .

about 4 years ago · Juan Pablo Isaza Denunciar
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