Al desarrollar una aplicación PhoneGap móvil tuve un problema interesante. Necesitaba consultar sobre 10 elementos de datos de la base de datos (a través de la API de SQLite de PhoneGaps) ... Al igual que muchas API de JavaScript, esta era asincrónica. Cuando hiciste tu consulta, pasarías un controlador de "éxito".Obteniendo comportamiento sincrónico en javascript?
Ahora, mi preferencia en este caso hubiera sido un método de consulta síncrona que solo se devolvió cuando se completó. Entonces podría haber escrito un código de línea recta que consultara cada uno de los 10 elementos 1 tras otro.
Debido a la naturaleza asíncrona de PhoneGap (en realidad, veo esto todo JS sin embargo) me vi obligado a escribir una bestia que tenía este aspecto:
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
db.query("SELECT...", success() {
}
}
}
}
}
Y esto es sólo la mitad de lo más profundo que tenía que ir (y muy simplificada ...) ... Cuando, si hubiera estado usando SQLite en C, que podría haber hecho algo así, simplemente:
db.query("SELECT...", resultA);
db.query("SELECT...", resultB);
db.query("SELECT...", resultC);
db.query("SELECT...", resultD);
db.query("SELECT...", resultE);
me parece que el enfoque manejador de éxito es grande cuando solo tienes que ir 1 o 2 niveles de profundidad ... Pero, se derrumba completamente cuando necesitas más tha n que ...
¿Es su biblioteca, o característica de una biblioteca en algún lugar que hace esto más fácil?
Biblioteca guay. Es bueno saber que mi respuesta no es una locura, ya que eso es lo que hace la última muestra de código que tienes. +1 – cdeszaq