removeattribute ejemplos array javascript jquery loops deferred

javascript - ejemplos - jquery aplazado en.each loop



jquery map (2)

Esto debería ser simple. Tengo una función que se llama y tengo que esperar a que se completen todas las operaciones de sincronización. lo que quiero es algo como esto ...

self.processSchema(data).done(function(results){ //do stuff});

La función processSchema realiza un bucle usando $ .each y llama a un método async.

var processSchema = function(data) { var def = new $.Deferred(); $.each(table, function() { //calls an async SQLitePlugin method db.executeSql(sql, data, function(tx, results){ def.resolve(results); } } return(def.promise()); }

Esto no parece funcionar, soy nuevo en $ .Deferido por lo que cualquier orientación sería útil


Necesitarás una promesa para cada iteración

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(); }


Para los demonios de programación funcional (como yo), aquí hay una versión de expresión única de la respuesta de adeneo :

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(); };

También me gustaría señalar que estás iterando sobre la table , pero no estás haciendo nada con cada elemento de la iteración (es decir, la devolución de llamada en each no tiene argumentos). Ahora, no estoy seguro de cuál es tu objetivo, pero esto no me parece correcto: P