Felix Riesterer: modale Fenster

Beitrag lesen

Lieber dedlfix,

function start () {
  return new Promise((resolve, reject) => {
    ok_button.addEventListener('click', () => {
      resolve(42);
    });

    cancel_button.addEventListener('click', () => {
      reject(0);
    });

    dialog.open();
  });
}

start()
  .then(result => {
    console.log('Die Antwort ist', result);
  })
  .catch(error => {
    console.log('Abgebrochen');
  });

AHA! Also muss die aufgerufene Fuktion ein Promise-Objekt zurückliefern. Diesem Promise-Objekt kann man mit der then-Methode eine (Callback-)Funktion für den resolve-Fall geben, mit der catch-Methode eine für den reject-Fall.

Ist das so richtig? Wenn ja, dann sieht das schon ziemlich aus wie meine callBack-Sammlung, nur dass diese im Zweifel noch zwischen "cancel" und "abort" unterscheiden kann, also neben resolve und reject noch abort liefert. Ein Promise-Objekt kann das also nicht? Das fände ich dann für mein Tutorial unzureichend!

Ich lese gerade nach und sehe, dass man mehrere then-Methodenaufrufe machen kann, und dass Promise-Objekte wesentlich komplexer sind (Status-Werte, innere und äußere Promises, Exceptions) als meine Callback-Lösung, die ich doch als recht elegant und für den vorliegenden Fall als bequem empfinde. Wenn man jetzt noch die Buttons frei benennen könnte, wäre sie sogar luxuriös, aber das will ich in diesem Tutorial nicht auch noch behandeln.

Liebe Grüße,

Felix Riesterer.

0 48

modale Fenster

JSKid
  • javascript
  1. 0
    Christian Kruse
  2. 0
    dedlfix
    1. 0
      JSKid
      1. 0
        Auge
        • html
        • javascript
        • programmiertechnik
        1. 0
          JSKid
          1. 0
            dedlfix
          2. 0
            Auge
          3. 0
            Felix Riesterer
      2. 0
        dedlfix
  3. 4
    Felix Riesterer
    1. 0
      Matthias Scharwies
    2. 1
      JürgenB
      1. 1
        Christian Kruse
        1. 1
          JürgenB
          1. 0
            Christian Kruse
            1. 0
              Felix Riesterer
              1. 0
                Felix Riesterer
          2. 0
            Felix Riesterer
            1. 0
              Christian Kruse
      2. 0
        Felix Riesterer
        1. 0
          JürgenB
          1. 0
            dedlfix
            1. 0
              JürgenB
    3. 1
      dedlfix
      1. 0
        Felix Riesterer
        1. 0
          dedlfix
          1. 0
            Felix Riesterer
            1. 0
              dedlfix
              1. 0
                Felix Riesterer
                1. 0
                  dedlfix
                  1. 0
                    Felix Riesterer
                    1. 1
                      Felix Riesterer
    4. 0
      1unitedpower
      1. 0
        JürgenB
      2. 0
        Felix Riesterer
        1. 1
          1unitedpower
          1. 0
            JürgenB
            1. 0
              1unitedpower
          2. 0
            Felix Riesterer
            1. 0
              1unitedpower
    5. 0
      Felix Riesterer
      1. 0
        dedlfix
        1. 0
          Felix Riesterer
          1. 1
            dedlfix
            1. 0
              Felix Riesterer
              1. 0
                dedlfix
              2. 1
                dedlfix