Sunday, October 22, 2017

is it possible not to execute the promise (.then ()) in the controller when there is an error in a web request?

I’m currently using a factory called http that when I invoke it, I make a web request. this receives as a parameter the url of the web request.

app.factory('http', function ($http) {
 var oHttp = {}
 oHttp.getData= function (url) {

    var config={
        method: 'GET',
        url: url
    }
    return $http(config).then(function(data) {
        oHttp.data=data.data;
    },function(response) {
       alert("problem, can you trying later please?")
    });
  }
 return oHttp;

});


function HelloCtrl($scope, http) {
 http.getData('https://www.reddit.com/.json1').then(function(){
  if(http.data!=undefined){
   console.log(http.data)
  }
 })
}

I would like the promise not to be executed on the controller if the result of the web request is not satisfied or there is a problem. is there any better solution? I want to avoid doing this every time I make a web request, or do not know if it is the best way (see the if):

//I am putting "1" to the end of the url to generate an error.
  http.getData('https://www.reddit.com/.json1').then(function(){
   //validate that the result of the request != undefined
    if(http.data!=undefined){
     alert(http.data.kind)
    }
  })

In my real project I make n web requests using my factory http, I do not want to do this validation always. I do not know if I always have to do it or there is another solution.

this is my code:

https://plnkr.co/edit/8ZqsgcUIzLAaI9Vd2awR?p=preview

Source: AngularJS



from Angular Questions https://angularquestions.com/2017/10/22/is-it-possible-not-to-execute-the-promise-then-in-the-controller-when-there-is-an-error-in-a-web-request/
via @lzomedia #developer #freelance #web #lzomedia.com

No comments:

Post a Comment