romero: Design-Änderung innerhalb zwischen Funktionsaufrufen

Beitrag lesen

So nun die Frage an dich, wie mache ich das :) ?
Das hatte wir in dem alten Thread schon. Hier mal als Objekt. Wenn du xxx () erst mal weglässt, werden Funktionen nacheinander aufgerufen. Zwischenwerte kannst du am Objekt speichern.
Die Funktion xxx wird hierbei nochmal in viele Teilaufrufe zerlegt, die die Schleifen für i und j immer nur um jeweils eine Schritt abarbeiten.

function MyObj() {
}
MyObj.prototype = {
  states: ["uninitialized", "init", "xxx", "yyy"],
  actState: 0,
  indexI: 0,
  indexJ: 0,
  SearchValue: 60000,
  nextState: function() {
    if (this.actState < this.states.length - 1) {
      setTimeout(this[this.states[++this.actState]].bind(this));
    }
  },
  init: function() {
    // irgendwas kurzes machen
    // ...
    this.nextState();
  },
  xxx: function() {
    for(var i = this.indexI; i <= 65535;) {
      for(var j = this.indexJ; j <= 65535;) {
        for(var k = 0; k <= this.SearchValue; ++k) {
          if (i==k && j==k && k==this.SearchValue)
          {
            this.nextState();
            return;
          }
        }
        ++this.indexJ;
        setTimeout(this[this.states[this.actState]].bind(this));
        return;
      }
      ++this.indexI;
      setTimeout(this[this.states[this.actState]].bind(this));
      return;
    }
  },
  yyy: function() {
    // irgendwas kurzes machen
    // ...
    alert("durch");
    this.nextState();
  },
};
var xxx = new MyObj();
xxx.init();

Erstmal Danke dafür. Aber nun brauche ich doch noch gern ne Erklärung von dir ;)

function MyObj() {
}

Das ist die ehemalige (meine) init, welche ich aus dem Hauptscript aufrufe, oder?

states: [ ... ]

Sind das meine Funktionen, welche ich habe? Also da wo ich zwischen den einzelnen Funktionen meinen Status ausgeben möchte?

Und was genau machen die einzelne Schritte. Tut mir leid, dass ich deine Finger und Tastatur stresse aber wie gesagt, um es ENDLICH verstehen zu können, muss ich nachfragen. Lieben Dank schonmal von mir.

var xxx = new MyObj();
xxx.init();

Dies ruft dann die o.g. Funktion auf?

LG Romero