Suggestion:-
Actually this is a big issue with angular http call, Because http call does not support async :false 
See my answer in this discussion : Angularjs $http VS jquery $.ajax
Your code look like a lot of confusions for call new http method inside of inside methods.  
And your code looks like not standard format also gives lot of confusion.
So if you change any code in this file after some day's, then you need to put a microscope glass in your eye, and will see one by one lines. it's will take more  times.  So avoid http call only for this type of situation.
Solution:-
Avoid http call means, pleas do with Ajax call with async:false option 
The code look like 
$.ajax({
    type:       "GET",
    dataType:   "Json",
    url:        'Your URL',
    **async:      false,**
    success: function (returndata, status, jqxhr) {
        $(this).html(returndata).hide().fadeIn();
    }).fail(function() { 
        alert("error"); 
    })
});
Setting async to false means that the statement you are calling has to complete before the next statement in your function can be called. If you set async: true then that statement will begin it's execution and the next statement will be called regardless of whether the async statement has completed yet.