Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/10/2013, 19:20
Avatar de sonickseven
sonickseven
 
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 12 años
Puntos: 2
Respuesta: Yo se, Yo se callback se demora y despues hace pero como solucion esto?o

hola chicos pues bueno lo solucione pero debo decir que me demore bastante. lo que tu dices de modelos de html como jade lo pense pero en vez de archivos jade lo intente con archivos hbs mejor conocidos como handlebars que es muy similar. PERO no pude ya que en el problema de arriba (en codigo) me falto terminarla. Pero lo que continuaba era unas funciones que estaban aparte mejor dicho era un mierdero!!! cosa que me quedaria mucho mas grande con esos archivos (eso no significa que no los utilizare a futuro :D ) ahora como lo soluciones????. Pues bueno debiado a que yo antes de node programe en PHP y demas lenguajes siempre pienso como ellos (sync) pero con node es diferente. Supe que tenia que acoplarme o acoplarme de lo contrario nunca lograria avanzar y gracias a Dios des pues de unos dias de pensar como solucionarlo al estilo node lo pude hacer :D . LO que hice fue ordernar las consultas por que estaba repitiendo unas y otras no tenbian que estar de ultimas sino de primeras el caso es que habia que ordenar y despues le pase todos los resultados de esas consultas en un objeto a otra funcion sincroma. AQUI ESTA EL CODIGO PERO ES ALGO LARGO PERO FUNCIONA SI ALGUIEN PONE OTRA FORMA DE SOLUCIONARLO ESCRIBAN ABAJITO :D :
Código Javascript:
Ver original
  1. function histori(dato, callback) {//es la que inicia todo desde el socket!!
  2.     var usuario = dato.meet.substr(17).substr(0, dato.longs.substr(8)), session=dato.session;
  3.     var historias = [], userObj = [];
  4.     timeLine(conexion, usuario, function(a){
  5.         var loop = a.length, count = 0, abc=1;
  6.         a.forEach(function(ele, ind){// se hace un foreach para recorrer el array ind es el indice y ele es el cotenido
  7.             slt.selectEspecific(conexion, ['nick', 'nombres', 'conectado'], 'usuario', 'cod', ele.seguido, 'cod', '', 0, 1, function (user){
  8.                 if(ele.NoSee!==null){
  9.                     switch(ele.NoSee){
  10.                         case String(usuario):
  11.                         abc+=1;//no hace nada pero se va sumando
  12.                         //console.log('no lo ve el dueño', ind);
  13.                         break;
  14.                         case '0000':
  15.                         abc+=1;//no hace nada pero se va sumando
  16.                         //console.log('no lo ve nadie', ind);
  17.                         break;
  18.                         default:
  19.                         domHistory(session, usuario, diseno, conexion, slt, ele, user[0], function(e){//la que hace todas las consultas
  20.                             if(historias.length+abc===loop){//si los dos son iguales envia el callback al usuario osea un array :D
  21.                                 callback(historias);
  22.                             }
  23.                             historias.push(e);
  24.                         });
  25.                         break;
  26.                     }
  27.                 }else{
  28.                     domHistory(session, usuario, diseno, conexion, slt, ele, user[0], function(e){//la que hace todas las consultas
  29.                         if(historias.length+abc===loop){
  30.                             callback(historias);
  31.                         }
  32.                         historias.push(e);
  33.                     });
  34.                 }
  35.             });
  36.         });
  37.     });
  38. }
  39.  
  40. function domHistory(session, usuario, diseno, conexion, selects, fila5, fila6, callback){//funcion que hace todas las consultas y las envia a otra para que cree lo que es el diseño
  41.     var datos={};
  42.     datos.fila5=fila5;
  43.     datos.fila6=fila6
  44.     slt.difucion(conexion, 'arreglo', fila5.arreglo, function(difucion){
  45.         datos.difucion=difucion[0];
  46.         slt.CountAnswer(conexion, fila5.cod, function(CountAnswer){//cantidad de respuestas de la historia
  47.             if(CountAnswer.length>0)
  48.                 datos.cantidad=CountAnswer[0].cantidad;
  49.             slt.numerosLikeNo(conexion, 'gustarNogustar', 'historia', fila5.cod, 'gustaNOgusta', 1, function(a){
  50.                 if(a)
  51.                     datos.likeCount=a;
  52.                 slt.numerosLikeNo(conexion, 'gustarNogustar', 'historia', fila5.cod, 'gustaNOgusta', 0, function(a){
  53.                     if(a)
  54.                         datos.nolikeCount=a;
  55.                     if(session.user!==undefined){//comprueba que el usuario este logeado
  56.                         if(parseInt(String(session.user).substr(4))===fila5.seguido)//si el usuario es el dueño de la historia
  57.                             datos.usuario=1;//siginifica que elimina su historia
  58.                         else
  59.                             datos.usuario=2;//difunde esa historia
  60.                         var column=['historia', 'usuario', 'gustaNogusta'];
  61.                         var dato=[fila5.cod, String(session.user).substr(4), 1];
  62.                         slt.UniversalSelect(conexion, 'gustarNogustar', column, dato, 'cod', '', 0, 10, function(resul){//busca si el usuario ya le dio gustar para que no lo vuelva a hacer
  63.                             if(resul.length<1)
  64.                                 datos.meLike=1;
  65.                             column=['historia', 'usuario', 'gustaNogusta'];
  66.                             dato=[fila5.cod, String(session.user).substr(4), 0];
  67.                             slt.UniversalSelect(conexion, 'gustarNogustar', column, dato, 'cod', '', 0, 10, function(resul){//busca si este usuario ya le dio no me gusta
  68.                                 if(resul.length<1)
  69.                                     datos.meNolike=1;
  70.                                 slt.followValidator(conexion, 'seguidor_seguido', 'seguido', fila5.seguido, 'seguidor', String(session.user).substr(4), function(ValiSegui){
  71.                                     if(ValiSegui.length>0){
  72.                                         slt.followValidator(conexion, 'seguidor_seguido', 'seguidor', fila5.seguido, 'seguido', String(session.user).substr(4), function(ValiSegui){
  73.                                             if(ValiSegui.length>0)
  74.                                                 datos.ValiSegui=1;//son amigos
  75.                                             else
  76.                                                 datos.ValiSegui=2;//no son amigos
  77.                                             datos.session=session;
  78.                                             callback(diseno.CrearDom(datos));//la funcion CreaDom devuelve un dato que es un string el cual tiene el diseño en html no lo muestro por que eso ya es normal la magia viene aqui
  79.                                         });
  80.                                     }
  81.                                 });
  82.                             });
  83.                         });
  84.                     }
  85.                 });
  86.             });
  87.         });
  88.     });
  89. }

se me habia olvidado decirles que yo trabajaba o trabajo con php entonces tengo mi proyecto en apache y me conecto con socket con la direccion ip de mi pc:3000 que es el puerto donde esta node