Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

161
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!