не могу получить значение в моем контроллере после вызова обещания в сервисе - PullRequest
0 голосов
/ 29 января 2019

У меня есть контроллер, который вызывает функцию в службе.это, в свою очередь, вызывает функцию обещания внутри той же службы.

проблема в том, что я не могу получить возвращенное значение в моем контроллере.

контроллер:

    function mainFunctionInControlelr() {       
       some code here...
       vm.evtHTTPFactory.getData() // calling the service
        .then(function(response) {
            console.log("the returned value is " + response.myReturned );
        });

               }

служба:

    factory.getData = function(parm) { 
        return factory.getABC(parm); // calling another method in the same service
    };      



    factory.getABC = function(parm) { 
        return $q(function(resolve, reject) {
            $http.get(PltConfig.APIPath + '/v1/............', {
                params: { inputParm: parm }
            })
            .success(function (response) {
                resolve(response.data.myReturned);
                return;
                } ) 
            });
        };

проблема в том, что getData внутри службы вызывает getABC, также внутри службы.что-то теряется в процессе.Мне нужно иметь "myReturned" в контроллере.

что мне нужно поместить в getData (в сервисе), чтобы все заработало?

большое спасибо.

1 Ответ

0 голосов
/ 29 января 2019

Я бы использовал async await ... вот так:

в вашей функции getData:

factory.getData = async function(parm) { 
    var data = await factory.getABC(parm);
    return data;
};

в вашем контроллере функций:

async vm.evtHTTPFactory.getData() {
  var myResp = await vm.evtHTTPFactory.getData()
  console.log(myResp)}

Примерздесь: https://jsfiddle.net/hernangiraldo89/frv4L2jh/4/

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...