About 1 in every 10 times I refresh my project, the data from my database is not retrieved and I have to refresh the page again to get it. I tried adding a 101ms timeout onto the function which retrieves the data, and this worked- but also removed a lot of other functionality of the site.
The problem is that sometimes the page loads before the data is retrieved.
Is there a better way to solve this than using a timeout? My code for the POST is below:
 get_data: function (kpi, date_from, date_to, callback) {
        var config = {
            method: 'POST',
            url: '/getData',
            data: {
                kpi: kpi,
                date_from: date_from,
                date_to: date_to
            }
        };
        $http(config)
            .success(function (data) {
                callback(data);
            })
            .error(function (data, status, headers, config) {
                console.log(data, status, headers, config);
            });
    }
And then where this method is called (currently with the timeout, which is breaking other site functionality):
  $scope.update_all_data = $timeout(function(){
    $scope.show_loading = true;
    var date_from = findDateUnix($scope.myDateFrom, $scope.availableDates);
    var date_to = findDateUnix($scope.myDateTo, $scope.availableDates);
    UpdateSvc.get_data($scope.kpi_selected, date_from, date_to, function(res){
        raw_data = [];
        if(res.raw_data != null) {
            if(res.raw_data.length > 0){
                raw_data = res.raw_data;
                skey_data = [];
                if(res.skey_data != null) {
                    skey_data = res.skey_data;
                }
                var num = $scope.show_tab.indexOf(true);
                $scope.filtering = generateCategories();
                $timeout(function(){
                    $scope.display_nodata = false;
                    resizeObjects();
                    $('.md-datepicker-input').prop('disabled', true);
                    //Take out loading
                    $scope.show_loading = false;
                }, 100);
            }else{
                $scope.display_nodata = true;
                $timeout(function(){ $scope.show_loading = false;}, 100);
            }
        }else{               
            $scope.display_nodata = true;
            $timeout(function(){ $scope.show_loading = false;}, 100);
        }
    });
}, 101);
 
    