He intentado durante un tiempo obtener los datos de esta llamada, pero siempre devuelve "indefinido"

httpCall = function(sTformName) {
  let sURL = "https://urlthisone/api/",
  response; 

  $http.get(sURL)
    .success(function(data) {
      response = data;
    });
}

¿Alguna idea sobre lo que estoy haciendo mal? Gracias por adelantado.

1
Jose Peres 14 sep. 2018 a las 23:23

3 respuestas

La mejor respuesta

Puedes regresar y resolver la promesa ...

httpCall = function(sTformName) {
  let sURL = 'https://urlthisone/api/',
  return $http.get(sURL);
}

httpCall('myForm').then(response => {
  console.log(response.data);
});

$http.get es una llamada asincrónica y debe manejarse en consecuencia, en este caso, resolviendo el Promesa

3
scniro 14 sep. 2018 a las 20:30

Está realizando una llamada asincrónica y no devolverá un valor. Llama al éxito y al éxito interno necesita usar un método de devolución de llamada para obtener el valor que desea y trabajar con él.

function doSomethingWithTheData(data) {
  // process the data here.
}

httpCall = function(sTformName, callback) {
    let sURL = "https://urlthisone/api/",
    response; 

    $http.get(sURL)
        .success(function(data) {
        callback(data); // here's where we call the callback
    });
}

// call it with the callback
httpCall(fornName, doSomethingWithTheData);
0
nixkuroi 14 sep. 2018 a las 20:32

Consulte la documentación: https://docs.angularjs.org/api/ ng / service / $ http # get

Según esto, si utiliza angular.js 1.4.3+, $http.get(sURL) devuelve la promesa. Entonces necesitas $http.get(sURL).then(...) Además, consulte $ http.get (...). El éxito no es una función podría ayudar

0
georgeawg 15 sep. 2018 a las 05:08