Nach einem seltsamen Verhalten unserer Anwendung (mit strophe XMPP und jquery) haben wir festgestellt, dass die jquery-Ereignisschleife synchron ist und keine Ausnahme feststellt.
Wenn der erste Event-Handler eine Ausnahme auslöst, wird die zweite nie aufgerufen.
%Vor%Wir haben erwartet, zwei Ausgaben zu sehen, aber die zweite: "listener onBar" wurde nie angezeigt.
Siehe JQuery-Code, in der "trigger" -Funktion gibt es kein try / catch-Muster während der Schleife der Handler.
%Vor%Wir waren von dieser Implementierung überrascht.
In reinem Javascript werden alle Handler aufgerufen, selbst wenn einer von ihnen abgestürzt ist: Ссылка .
Weiß jemand, warum das JQuery-Team die Ausführung des nächsten Handlers nicht erlaubt, selbst wenn der vorherige abgestürzt ist? Warum werden Ausnahmen nicht abgefangen?
Warum haben sie Javascript-Ereignishandler nicht verwendet?
Dies geschieht aufgrund von dieser Schleife aus der .dispatch
-Quelle :
Wie Sie sehen können, gibt es keinen Versuch / Fang um .apply
.
So war es für Jahre und Jahre und Jahre .
Selbst wenn sie es wollten, würde das Ändern jetzt zu viel vorhandenen Code zerstören. Denken Sie daran, viele Dinge in jQuery, die jetzt willkürlich scheinen, wurden in einer anderen Zeit geboren.
Sie können das natürlich in Ihrem eigenen Code "reparieren" (indem Sie es in einen try / catch mit Fehlermeldung einfügen), aber Sie werden so ziemlich alle anderen überraschen.
Tags und Links javascript jquery javascript-events