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

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(debug raus)
Zeile 50: Zeile 50:
 
             return
 
             return
 
         }
 
         }
         if (this[this.pointer] instanceof Async)
+
         if (typeof(this[this.pointer])=="object") //auch hier gibt's Probleme mit instanceof
 
         {
 
         {
 
             this[this.pointer].start( obj, this );
 
             this[this.pointer].start( obj, this );

Version vom 22. März 2009, 11:57 Uhr

/* +-------------------------------------------------------------------------+
 * |                                                                         |
 * |  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 (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 ();