Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ajax - multiproceso

Estas en el tema de Ajax - multiproceso en el foro de Frameworks JS en Foros del Web. Buenas Gente... tengo un ajax que dispara 3 procesos a la vez, cada proceso puede tardar mas o igual tiempo que el otro. Luego de ...
  #1 (permalink)  
Antiguo 18/10/2011, 23:10
Avatar de granbosteron  
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 20 años, 2 meses
Puntos: 1
Ajax - multiproceso

Buenas Gente...
tengo un ajax que dispara 3 procesos a la vez, cada proceso puede tardar mas o igual tiempo que el otro.
Luego de que se cumplan los 3 procesos, debo enviar un email.

Mi pregunta es:
como puedo hacer para saber que los 3 procesos fueron realizados con exito. Debo buscar la manera de tener un contador que cuando sume 3, envie el email. Justamente pense hacerlo en la instacia "success:" de cada proceso en donde pondria un contador, ya lo intente y funciona! pero algunas veces al parecer los procesos pueden durar el mismo tiempo y de esta manera recibo 2 emails.

Hay alguna manera de saber cuando estos procesos fueron justamente procesados y trajeron un resultado?


Código:
$.ajax({
type:"POST",
dataType:"html",
url:"include/ajax/proceso1.php",
data:auto_info,
success:function(msg){
    resultado1="ok";
},
error: function(jqXHR, strError){
   resultado1="error";
},
  timeout:50000
});

$.ajax({
type:"POST",
dataType:"html",
url:"include/ajax/proceso2.php",
data:auto_info,
success:function(msg){
    resultado2="ok";
},
error: function(jqXHR, strError){
   resultado2="error";
},
  timeout:50000
});

$.ajax({
type:"POST",
dataType:"html",
url:"include/ajax/proceso3.php",
data:auto_info,
success:function(msg){
    resultado3="ok";
},
error: function(jqXHR, strError){
   resultado3="error";
},
  timeout:50000
});
Gracias chicos!
__________________
Saludos :adios: :adios: :adios:
  #2 (permalink)  
Antiguo 20/10/2011, 00:10
Avatar de granbosteron  
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 20 años, 2 meses
Puntos: 1
Respuesta: Ajax - multiproceso

Me auto Respondo
Espero que les sirva el ejemplo para cuando lo necesiten. Guardenlo porque es dificil encontrarlo

Encontre la respuesta aqui:
http://stackoverflow.com/questions/4...ple-ajax-calls

La respuesta a la consulta hace referencia a esta página:
http://jsfiddle.net/subhaze/EN8nc/6/

EL código:

Código:
$(document).ready(function(){


$('#button').click(function() {
    var requestCallback = new MyRequestsCompleted({
        numRequest: 3,
        singleCallback: function(){
            alert( "I'm the callback");
        }
    });
    $.ajax({
        url: '/echo/html/php1',
        success: function(data) {
            requestCallback.requestComplete(true);
        }
    });
    $.ajax({
        url: '/echo/html/php2',
        success: function(data) {
            requestCallback.requestComplete(true);
        }
    });
    $.ajax({
        url: '/echo/html/php3',
        success: function(data) {
            requestCallback.requestComplete(true);
        }
    });
});

var MyRequestsCompleted = (function() {
    var numRequestToComplete, 
        requestsCompleted, 
        callBacks, 
        singleCallBack; 

    return function(options) {
        if (!options) options = {};

        numRequestToComplete = options.numRequest || 0;
        requestsCompleted = options.requestsCompleted || 0;
        callBacks = [];
        var fireCallbacks = function () {
            alert("we're all complete");
            for (var i = 0; i < callBacks.length; i++) callBacks[i]();
        };
        if (options.singleCallback) callBacks.push(options.singleCallback);

        

        this.addCallbackToQueue = function(isComplete, callback) {
            if (isComplete) requestsCompleted++;
            if (callback) callBacks.push(callback);
            if (requestsCompleted == numRequestToComplete) fireCallbacks();
        };
        this.requestComplete = function(isComplete) {
            if (isComplete) requestsCompleted++;
            if (requestsCompleted == numRequestToComplete) fireCallbacks();
        };
        this.setCallback = function(callback) {
            callBacks.push(callBack);
        };
    };
    })();


});
En el HTML iria esto:
Código HTML:
<input type="button" id="button" value="send" /> 
Lo que hace este código, es lanzar tres procesos externos a la vez (php1,php2,php3), que por mi cuenta
cuando estos procesos externos se encuentran en funcionamiento lanzo un LOADING. Cuando cada uno de
los procesos trajo un resultado, el código este permite realizar otra tarea (o sea aqui apagamos el loading
y seguimos adelante).

Abrazo a todos y espero haberlos ayudado, como tantas veces me ayudaron ustedes!!!!
__________________
Saludos :adios: :adios: :adios:

Etiquetas: ajax, funcion, html, multiproceso, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:26.