I'm learning Angular and I've come across two approaches to make calls that return promises. I'd like to know if one approach is better than the other and/or when you would use each.
First Technique:
function getSomeDataFromServer() {
    var deferred = $q.defer();
    if (myData) {
        // call to backend was previously made and myData is already loaded 
        deferred.resolve(myData);
    } else {
        // get data from server
        $http.get(my_url_endpoint).then(function(response) {
            // cacheResult() will set myData = response.data
            deferred.resolve(cacheResult(response));
        });
    }
    return deferred.promise;
}
Second Technique:
function getSomeDataFromServer() {
    if (myData) {
        // call to backend was previously made and myData is already loaded 
        return $q.when(myData);
    } else {
        // get data from server
        return $http.get(my_url_endpoint).then(function(response) {
            // cacheResult() will set myData = response.data
            return cacheResult(response);
        });
    }
}
 
    