Antwort an „dedlfix“ verfassen

Tach!

Bei allem was ich im Internet gefunden habe, ist mir nicht klar geworden, ob Javascript den Programmfluss anhalten kann, wenn ein modales Fenster aufgerufen wurde und die dort gemachten Eintragungen dann später im Hauptfenster verarbeiten kann.

Nein, kann es nicht. Javascript ist single-threaded und du musst den Thread wieder freigeben, damit der Nutzer den Dialog selbst bedienen kann. Es gibt dann irgendwann ein Event, wenn das Formular abgesendet wurde oder der OK/Cancel-Button aktiviert wurde oder Backdrop geklickt oder Esc gedrückt oder was auch immer. In diesem Event kann man das Ergebnis des Dialogs aufbereiten und ruft dann eine Aktion auf, die damit was tun soll. Somit ist aber das Aufrufen des Dialogs und das Abarbeiten des Ergebnisses an getrennten Stellen im Code. Besser ist, wenn der Dialog-Aufruf ein Callback übergibt (oder zwei: eins für OK, eins für Cancel) und oben genanntes Event dieses Callback aufruft. Und dann kommt man an die Stelle, an der der Einsatz eines Promise sinnvoll ist. Die sind für asynchrones Arbeiten geschaffen, und so ein Dialog arbeitet ja auch nach diesem Prinzip. Der OK-Button (und verwandte Bedienhandlungen) löst das Promise (resolve), Cancel und Co. weisen es zurück (reject).

dedlfix.

Folgende Beiträge verweisen auf diesen Beitrag:

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

abbrechen