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

194
Vistas
¿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 Respuestas
Responde la pregunta

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 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