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

195
Visualizações
¿Cómo hacer solicitudes sincrónicas de $http() similares a $.ajax()?

Estoy haciendo solicitudes síncronas, es decir, siempre configuro {async: false} .

Mi problema es que, mientras que $.ajax() de jQuery devuelve los datos de respuesta que quiero que devuelva, $http() de AngularJs devuelve una promesa que es un gran dolor para mí.

A continuación, hay un código para demostrar mi problema.

Esto es jQuery:

 // Library for sending $.ajax requests Core.libs.prototype.send = function(...) { var options = { async: false, // ... }; return $.ajax(options).done(function(data) { return data; }); } // Here I make requests let rest = Core.libs.rest(...); // Get the library let myVar = rest.send(...); // Make the request console.log(myVar); // This returns an array from DB: [apple, orange] which is OK

Y esto es AngularJS:

 // Library for sending $http requests Core.libs.prototype.send = function(...) { var options = { async: false, // ... }; return $http(options).then(function(response) { return response.data; }, function(err) { return err; }); } // Here I make requests let rest = Core.libs.rest(...); // Get the library let myVar = rest.send(...); // Make the request console.log(myVar); // This returns a PROMISE which is not what I want

¿Hay alguna forma de modificar Core.libs.prototype.send para devolver datos reales en lugar de una promesa?

Me gustaría evitar modificar cualquier otra cosa que no sea el método de la biblioteca.

No quiero esta solución, porque entonces tendría que reemplazarla en todas partes de mi código:

 let rest = Core.libs.rest(...); // Get the library let myVar = rest.send(...).then(data => data); // Make the request console.log(myVar); // This returns [apple, orange] but I don't want this solution

También probé esto, pero no funciona como se esperaba:

 // Library for sending $http requests Core.libs.prototype.send = async function(...) { var options = { // ... }; let res = await $http(options).then(function(response) { return response.data; }, function(err) { return err; }); return res; } // Here I make requests let rest = Core.libs.rest(...); // Get the library let myVar = rest.send(...); // Make the request console.log(myVar); // This still returns a PROMISE. Why?
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debería aceptar la promesa/async await, pero ese no es el punto de su pregunta. Para lograr lo que desea, llame usando la notación async/await o la cláusula then() , pero no juntos:

 // Library for sending $http requests Core.libs.prototype.send = async function(...) { var options = { // ... }; try { const response = await $http(options); return response.data; } catch (err) { return err; } }
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