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