jquery deferred in .each loop jquery deferred in .each loop jquery jquery

jquery deferred in .each loop


You'll need a promise for each iteration

var processSchema = function(data) {     var promises = [];     $.each(table, function() {         var def = new $.Deferred();         db.executeSql(sql, data, function(tx, results){            def.resolve(results);         });         promises.push(def);     });     return $.when.apply(undefined, promises).promise();}


For Functional Programming fiends (like myself), here's a single-expression version of adeneo's answer:

var processSchema = function(data) {    return $.when.apply($, $.map(table, function() {        var def = new $.Deferred();        db.executeSql(sql, data, function(tx, results){            def.resolve(results);        });        return def;    })).promise();};

Also I'd like to note that you are iterating over table, but aren't doing anything with each item in the iteration (i.e. the callback in your each has no arguments.) Now, I'm not sure what your goal is, but this doesn't seem right to me :P