Q:

Pegar valor de dentro de uma função

tô com um problema de lógica aqui, acho q deve ser uma coisa bem "burra" de minha parte, tipo, tenho que tirar um valor de dentro da função, e não estou conseguindo com um return por ser um request http. olhem:
$scope.postData = function(method, data, file){

    var uploadUrl = base_url+'main/upload/';

    fileUpload.uploadFileToUrl(file.file, uploadUrl, file.title);

    $http.get(base_url+'main/lastId/')
    .success(function (data) {
        lastId = data;
        return lastId; // <------ PRECISO DESSA VARIÁVEL
    });

    data.last_id = lastId; // <----- PARA USAR ELA AQUI

    $http.post(base_url+method+'/post/'+table, data)
    .success(function (data) {
        $scope.posts = data;
        $scope.exibirForm = 'listar';
        $scope.form = {};
        $scope.estadoBotao = "Adicionar";
    });
}

como viram, preciso pegar o lastId, para modificar o array data para fazer uma postagem com uma ligação do id de um arquivo.

A:

O http do AngularJS é assíncrono, portanto a variável será indefinida nesse momento.
Uma opção é usá-la no success, algo asssim:
$http.get(base_url + 'main/lastId/')
    .success(function(data) {
        lastId = data;
        facaAlgo(lastId); // irá passar o valor para a função
    });

function facaAlgo(lastId) {

    data.last_id = lastId; // Aqui poderá usar lastId, porquê terá sido resolvido pela Promise

    $http.post(base_url + method + '/post/' + table, data)
        .success(function(data) {
            $scope.posts = data;
            $scope.exibirForm = 'listar';
            $scope.form = {};
            $scope.estadoBotao = "Adicionar";
        });
}

O que acontece é que você está tentando usar um valor que ainda não existe, porque o http não irá travar a execução, ele irá ser executado e passar para a próxima instrução. O nome para resolver esse tipo de situação é callback.

