0

I wonder if anyone can see a problem with this for loop.

I'm using parse, the for loop is inside a success callback for an object query.

When the loop runs, i jumps to response.length before it even finishes it's first loop

var e = [];
for (i = 0; i < response.length; i++) {
    console.log("length: " + response.length);
    var query = new Parse.Query(conEvent.Events);
    query.get(response[i].get("eventID"), {
        success: function (result) {
            var object = result;
            console.log("i: " + i)
            e[i] = {
                "name": object.get("name"),
                "description": object.get("description"),
                "dates": conEvent.datesToArray(object.get("dates")),
                "ufDates": object.get("dates"),
                "creator": object.get("creator"),
                "id": object.id,
                "invited": conEvent.getInvited(object.id)
            }
            console.log(e);
        },
        error: function (error) {
            alert("Error: " + error.code + " " + error.message);
        }
    });

}

at the moment:

console.log("length: " + response.length); outputs "length: 2"

console.log("i: " + i) outputs "i: 2"

A more contextual view of the loop if anyone needs it:

this.getEvents = function () {
    //get all the events user is invited to, list them and list the last....3? actions on the event
    //display most likely date
    //display number of users voted
    //go green when date chosen
    console.log("getEvents");

    var Invite = Parse.Object.extend("Invite");
    var query = new Parse.Query(Invite);
    query.equalTo("username", Parse.User.current().get("username"));
    query.find({

        success: function (response) {
            var e = [];
            for (i = 0; i < response.length; i++) {
                console.log("length: " + response.length);
                var query = new Parse.Query(conEvent.Events);
                query.get(response[i].get("eventID"), {
                    success: function (result) {
                        var object = result;
                        console.log("i: " + i)
                        e[i] = {
                            "name": object.get("name"),
                            "description": object.get("description"),
                            "dates": conEvent.datesToArray(object.get("dates")),
                            "ufDates": object.get("dates"),
                            "creator": object.get("creator"),
                            "id": object.id,
                            "invited": conEvent.getInvited(object.id)
                        }
                        console.log(e);
                    },
                    error: function (error) {
                        alert("Error: " + error.code + " " + error.message);
                    }
                });
            }
            conEvent.myEvents = e;
            console.log(e);
            $scope.$apply();
        }
    });
}
halfer
  • 19,824
  • 17
  • 99
  • 186
Jamie McAllister
  • 729
  • 2
  • 11
  • 33

0 Answers0