Benutzer:J*/lib/async.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 +
addJS("MediaWiki:Prototype.js");
 +
 
/* +-------------------------------------------------------------------------+
 
/* +-------------------------------------------------------------------------+
 
  * |                                                                        |
 
  * |                                                                        |

Version vom 5. August 2010, 00:04 Uhr

addJS("MediaWiki:Prototype.js");

/* +-------------------------------------------------------------------------+
 * |                                                                         |
 * |  Modul 2: Die Async-Klasse, um asynchrone Vorgänge behandeln zu können  |
 * |           mehr Erklärung gibt's woanders ... vielleicht ...             |
 * |                                                                         |
 * +-------------------------------------------------------------------------+
 */

function Async ( arr, ondone )
{
    var asyncobj = this;
    arr.each( function(d) { asyncobj.push(d); } );
    this.pointer = 0;
    this.ondone = ondone;
    this.nextElement = function() { return this[this.pointer+1]; };
    this.currentElement = function() { return this[this.pointer]; };

    this.start = function ( obj, ond ) {
        if (ond != null)
        {
            this.ondone = ond;
        }
        this.pointer = 0;
        this._control( obj );
    };

    this.continue = function ( obj ) {
        this.pointer++;
        this._control( obj );
    };

    this._control = function ( obj ) {
        if (this.pointer >= this.length)
        {
            if (typeof(this.ondone)=="function")
            {
                this.ondone( obj, this );
                return;
            }
            if (typeof(this.ondone)=="object") // instanceof gibt hier nur ärger
            {
                this.ondone.continue( obj );
                return;
            }
        }

        if (this[this.pointer]==null)
            return;
        if (typeof(this[this.pointer])=="function")
        {
            this.continue( this[this.pointer]( obj, this ) );
            return;
        }
        if (typeof(this[this.pointer])=="object") //auch hier gibt's Probleme mit instanceof
        {
            this[this.pointer].start( obj, this );
            return;
        }
        
    };

}

Async.prototype = new Array ();