Ver Mensaje Individual
  #10 (permalink)  
Antiguo 29/04/2014, 09:14
teleconocimiento
 
Fecha de Ingreso: febrero-2014
Mensajes: 30
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Nodejs se vuelve loco

Hola Utan.

Ya resolví el problema utilizando promesas. El problema era que cuando hacia la llamada a la function titulo(), esta se ejecutaba una vez, pero el callback de consultar_titulo se ejecutaba tantas veces como veces lo hubiera invocado.

Si por ejemplo llamaba una vez a la funcion titulo(), pasandole "aaa", todo funcionaba correctamente. El problema estaba que cuando hacia una nueva consulta, por ejemplo "bbb", en el momento de entrar en el callback, este se ejecutaba primero con "aaa", y despues con "bbb". Para entenderlo mejor dejo el log de la consola:

Código Javascript:
Ver original
  1. titulo():
  2. titulo(): function(): Titulo
  3. titulo(): Fuera del callback: bbb  
  4. titulo(): termino: aaa
  5. titulo(): Dentro del Callback
  6. titulo(): 0
  7. titulo(): termino: bbb
  8. titulo(): Dentro del Callback
  9. titulo(): 0

Ahora el problema se revuelve usando promesas y la libreria Q, con lo que el codigo de llamada quedaria como:

Código Javascript:
Ver original
  1. function titulo(terminoTitulo) {
  2.  
  3.     var promesa = function (arg1) {
  4.  
  5.         var defer = Q.defer();
  6.         consultar_titulo(arg1, defer.resolve);
  7.         return defer.promise;
  8.  
  9.     } //promesa
  10.  
  11.     promesa(terminoTitulo).then(function (resultado) {
  12.  
  13.         console.log("Dentro de Q");
  14.         console.log(resultado[0].titulo);
  15.  
  16.     });

Perdón si me he explicado mal y he causado confusión.

Saludos