Ankündigung

Einklappen
Keine Ankündigung bisher.

Callback - Objekt Abstraktion

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Callback - Objekt Abstraktion

    Hallo zusammen,

    ich habe ein Objekt, das über Library importiert wird und von dem ich nicht weiß, wie es aussieht. Also quasi eine Blackbox. Ich weiß lediglich, dass es eine Property (value) und einen EventListener (value-changed) besitzt, den ich wie folgt aufrufen kann:
    Code:
    var obj = blackBox;
    var self = this;
    
    self.obj.on('value-changed', function () {
      self.obj.value = 42;
      });
    Für den Fall, dass die Library nicht importiert werden kann, möchte ich statt dessen ein Fake-Objekt verwenden und habe es mit mittels Callbacks versucht.
    Code:
    var valueChanged = function() {
        console.log('cb1 called');
      };
    
    var fakeBlackBox = {
        value: null,
        on: function (cb1, cb2) {
          cb1();
          cb2();
        }
      };
    
    var obj = fakeBlackBox;
    var self = this;
    
    self.obj.on(valueChanged, function () {
      self.obj.value = 42;
      });
    Problem bei dem Callback ist, dass ich den Methodenaufruf nicht als String mit Dash ('value-changed'), sondern nur als CamelCase (valueChanged) oder Lowercase übergeben kann. Deshalb meine Frage, wie das Objekt aussehen muss, damit ich es so
    Code:
    self.obj.on('value-changed', function () {
      // ,,,,
      });
    aufrufen kann.


  • #2
    https://developer.mozilla.org/en-US/...ggering_events

    Grüße.

    Kommentar


    • #3
      Danke, aber das hilft mir leider nicht. Ich muss so etwas herausbekommen:
      Code:
      var fakeBlackBox = {
        // ...
      };
      ​​​​​​​var obj = fakeBlackBox;
      
      obj.on('value-changed', function () {
        // ...
      });
      Also eine Objektmethode namens 'on', die als Parameter zwei Funktionen erhält, von denen die erste wegen des Minuszeichens als String übergeben wird. Das muss kein echtes Event sein.

      Kommentar


      • #4
        Der erste Parameter ist einfach ein String, keine Function.
        Du gibst damit ja nur an, auf welchen Event du hören möchtest.

        In deiner Fake-Blackbox müsstest du dann an geeigneter Stelle den Callback triggern, mit on() registrierst du nur und im Programmablauf prüfst du dann, ob ein Listener registriert ist, den du triggerst.
        actra.development - Zend Certified Engineer for PHP5 - actra-oss @ github

        Kommentar


        • #5
          Da hatte ich wohl einen Tunnelblick gestern.

          Um wie im obigen Beispiel on() als Funktion anzuhängen, reicht natürlich ein String als erster Parameter. Soll das on() hingegen tatsächlich ein Event registrieren, müsste ich auf NodeJS zurückgreifen. Was im vorliegenden Fall aber nicht notwendig ist.

          Kommentar

          Lädt...
          X