Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/10/2011, 00:10
Avatar de granbosteron
granbosteron
 
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 20 años, 3 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: