Working on an mobile cordova/angular project. Below is a simple service call:
this.getSomeData = function (businessId) {
    var deferred = $q.defer();
    var query = "SELECT * FROM Stuff";
    $cordovaSQLite.execute(db, query).then(function (res) {
        deferred.resolve(res.rows);
    }, function (err) {
        deferred.reject(err);
    });
    return deferred.promise;
};
The issue is simple:
for (var k = 0; k < count; k++) {
    myService.getSomeData($scope.model.stuff[k].id, k).then(function (data) {
        // whatever
    }
);
getSomeData is async, so by the time it returns, the k of the for cycle is far from correct.
I thought of passing k to the service method as a parameter:
for (var k = 0; k < count; k++) {
    myService.getSomeData($scope.model.stuff[k].id, k).then(function (data) {
        // whatever
    }
);
And change the service method accordingly:
this.getSomeData = function (id, index) {
    var deferred = $q.defer();
    var query = "SELECT * FROM Stuff";
    $cordovaSQLite.execute(db, query).then(function (res) {
        deferred.resolve(res.rows, index);
    }, function (err) {
        deferred.reject(err);
    });
    return deferred.promise;
};
But that second parameter is ignored and is always undefined.
How to overcome this?
 
     
    