HUKS
HUKS

Reputation: 319

Call same $http function with different parameters after first is finished, using Factory in AngularJS

myData is generated in myFactory, and the following code works if myData is generated from a single myHttp.GetGroupMember function.

However, it is not working with multiple GetGroupMember calls as they execute "at the same time", and dataContainer gets initialized from createMyData call.

How can I call second GetGroupMember after first GetGroupMember is "finished"?

var myFactory = function (myHttp) {

    var myData = [];
    var dataContainer = [];
    var numProgress;

    var onSuccess = function(data_member) {
        myData.push(data_member);
        numProgress++;
        loadMember(dataContainer); // if member is succefully loaded, load next member
        // if numProgress == data_member.length, call next GetGroupMember() here?
    }

    var loadMember = function(data_group) {
        if (numProgress < data_group.length) {
            myHttp.getMemberDetails(data_group.division, data_group.members[numProgress]).then(onSuccess, onError);
        }
    }

    var createMyData = function(response) {
        dataContainer = response; // coded as shown to call loadMember() iteratively
        loadMember(dataContainer);
    }

    var getMyData = function(init) {
        myHttp.getGroupMember("Division1", "Group_Foo").success(createMyData); // getGroupMember_1
        // how to call getGroupMember_2 after getGroupMember "finished"?
        myHttp.getGroupMember("Division2", "Group_Bar").success(createMyData); // getGroupMember_2

        return myData;
    }
}

var myControl = function($scope, myFactory) {

    $scope.myData = myFactory.getMyData();
}

Upvotes: 0

Views: 48

Answers (1)

Michael Lorton
Michael Lorton

Reputation: 44406

Easiest thing in the world:

myHttp.getGroupMember("Division1", "Group_Foo")
.success(createMyData)
.then(function() {
     return myHttp.getGroupMember("Division2", "Group_Bar")
}).success(createMyData); 

Read up on promises.

Upvotes: 1

Related Questions