elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Acceso asincrono a Variables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acceso asincrono a Variables  (Leído 2,255 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Acceso asincrono a Variables
« en: 25 Agosto 2016, 20:20 pm »

Hola que tal estoy programando una pequeña interfaz y me encuentro con el siguiente problema:

Tengo una varible Array en javascript:

Código
  1. var sucursales = new Array;

Dicha variable se actualiza en tiempo de ejecución mediante la siguiente función:

Código
  1. function lista_sucursal() {
  2. $.ajax({
  3. url: '/get_sucursales.aspx',
  4. type: 'POST',
  5. success: function(data) {
  6. var r = JSON.parse(data);
  7. if(r.ok == true) {
  8. var i = 0;
  9. while (i < r.data.length) {
  10.    sucursales[r.data[i].id] = r.data[i].nombre;
  11.    //Mas codigo irrelevante aqui
  12. i++;
  13. }
  14. }
  15. else {
  16. //Error aqui
  17. }
  18. }
  19. });
  20. }

Dicha funcion se llama al momento de cargar la pagina primero que otras funciones...

Posteriormente tengo otro parte del codigo que hace mas o menos esto:

Código
  1. function maquinas_sucursales_tabla() {
  2. $("#tabla_body").html("");
  3. $.ajax({
  4. url: '/get_maquinas_sucursales.aspx',
  5. type: 'POST',
  6. success: function(data) {
  7. var r = JSON.parse(data);
  8. if(r.ok == true) {
  9. var i = 0;
  10. while(i < r.data.length) {
  11.    $("#tabla_body").append('<tr><td>' + sucursales[r.data[i].sucursal] + '</td></tr>');
  12. i++;
  13. }
  14. }
  15. else {
  16. //ERROR
  17. }
  18. }
  19. });
  20. }

El detalle esta en que hay veces que pone el dato correctamente y otras veces aparece "undefined" y esto es debido a que el codigo del jquery se ejecuta de forma asincrona...

Que recomiendan para solucionar esto, estaba pensando en usar un semaforo como "sucursales_ready" para solo cargar los otros datos cuando la variable ya este lista....

Pero no se, tal vez existe otro metodo mas rapido y/o sencillo.


Saludos!


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Acceso asincrono a Variables
« Respuesta #1 en: 25 Agosto 2016, 20:37 pm »

Puedes guardar los datos recibidos en cada ajax:
Cuando cada uno de ellos termine, los almacenas en la variable que sea.
Cuando lo almacenes, miras si el otro ha terminado también. Si lo ha hecho, pues haces lo que sea.

Otraopción que tienes, es hacer el segundo ajax cuando acabe el primero, con los problemas que eelo conlleva.


En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Acceso asincrono a Variables
« Respuesta #2 en: 26 Agosto 2016, 18:44 pm »

Hola!!! Para estos casos tenes dos alternativas. La primera es llamar a la segunda funcion como callback de la primera, asi te aseguras que se ejecuten una después de otra. Ora forma as profesional de hacer esto es mediante promise (promesas).

Dberias usar $.when() y dentrod e ella llamar a tus funciones asincronas. Otra ventaja de usar promesas en lugar de closures o callbacks es que el flujo de trabajo no se pausa mientras se espera la respuesta a una peticion AJAX.

https://api.jquery.com/jquery.when/
http://rlbisbe.net/2015/04/26/explicando-promises-de-javascript-con-un-ejemplo-simple/

De esta forma se hace en AnguarJS y la verdad es muy superior. Te acostumbras a el y luego jquery te parece algo primitivo en lo que a peticiones XHR se refiere xD
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Acceso asincrono a Variables
« Respuesta #3 en: 26 Agosto 2016, 20:04 pm »

Muy buen dia, gracias por las respuestas voy a leer los links que pusieron y los conceptos que mencionan para aprender mas ya que aunque se me da la programación, no tengo tanta experiencia en nivel web.

Cualquier duda que tenga la pondré por aquí.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
URLDownloadToFile no asincrono
Programación Visual Basic
Lupin 5 5,289 Último mensaje 25 Octubre 2009, 08:15 am
por cobein
Como File Uploader Asincrono ?
PHP
Diabliyo 7 5,942 Último mensaje 14 Agosto 2010, 01:51 am
por raul338
Duda con Sockets sincrono y asincrono .. « 1 2 »
.NET (C#, VB.NET, ASP)
llAudioslavell 12 18,366 Último mensaje 14 Enero 2013, 21:49 pm
por spiritdead
Variables, rutas de acceso & overlapping partitions.
Windows
Uxi0r 5 4,342 Último mensaje 31 Enero 2012, 20:30 pm
por Randomize
Bloquear acceso a variables de js
Seguridad
patilanz 2 2,269 Último mensaje 15 Abril 2015, 13:28 pm
por patilanz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines