Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

162
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda