Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2013, 20:32
Avatar de sonickseven
sonickseven
 
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
problema de callback !!!! :( , Explicacion de promesas

Hola chicos que tal como estan tengo un problema y es que estoy haciendo consultas en mysql con node y pues me di de cuenta que este da los resultados de la consulta por medio de un callback. Con una sola consulta no hay problema pero necesito hacer mas consultas dentro de esa consulta y pues ahi viene el problema por que el callback es asincrono y este ejecuta bn solo la consulta que esta en esta dentro de la otra. Escuche algo como promesas pero todabia no logro entender bn como es su funcionamiento. Aqui el codigo:

Código Javascript:
Ver original
  1. function histori(dato, callback){//una  funcion que se llama desde un socket.on (servidor)
  2.     var historias={}, userObj={};// variables de prueba ṕero no funciono
  3.     var usuario=dato.meet.substring(17).substring(0,dato.longs.substring(8));
  4.     timeLine(conexion, usuario, function(a){//prime callback******************************
  5.         for (var i = 0; i < a.length; i++){//hago un for para recorrer todo el resultado de la consulta anterior
  6.             var historia=a[i].historia;//asigno para que no hayan futuros errores coo undefined
  7.             slt.selectEspecific(conexion, ['nick', 'nombres'], 'usuario', 'cod', a[i].seguido, 'cod', '', 0, 1, function(user){//segundo callback************************************
  8.                 console.log(historia+' de '+user[0].nick);
  9.                 //userObj=user;
  10.             });
  11.         };
  12.     });
  13.     console.log(historias);//muestra {}
  14.     callback(null);
  15. }

el resultado muestra:

Código p:
Ver original
  1. {}
  2. Olle Bratt Pit no eres mi padre!!!  fuck yeah de SonickSeven
  3. Olle Bratt Pit no eres mi padre!!!  fuck yeah de noa2
  4. Olle Bratt Pit no eres mi padre!!!  fuck yeah de SonickSeven
  5. Olle Bratt Pit no eres mi padre!!!  fuck yeah de SonickSeven
  6. Olle Bratt Pit no eres mi padre!!!  fuck yeah de marbel93

si se dan de cuenta es siempre la misma historia (primera consulta) la que si cambia es la segunda consulta (el usuario)

la verdad es la primera vez que me encuentro con este error y alguien me dio me dijo esto pero no pude enterder en ese entonces lo que queria decir. :( y ahora no me responde (seguro esta ocupado) el problema es que node trabaja con callbacks para arriba y para abajo osea que si no soluciono esto no podre con node