2010-12-08 18 views
5

Ist es der Prozess, die Bindung zu machen oder viele Dinge zu binden, die in erster Linie das Problem sind, mehr Ereignisse als nötig zu binden?Was macht die Bindung langsam?

Die Antwort ist wahrscheinlich beides, aber in welchem ​​Umfang?

Auch würde ich annehmen, dass MouseOver-Ereignisse teurer als Click-Ereignisse sind, da sie häufiger überprüft werden müssen. Recht?

Antwort

2

von Ereignissen Bindung dauert Zeit, so dass, wenn Wenn Sie beispielsweise hundert oder mehr Ereignisse binden, wird die Benutzerinteraktion mit dem Browser während der Zeit, in der alle diese Ereignisse gebunden sind, "ereignislos" sein.

Je mehr Ereignishandler auf der Seite, desto länger die Ereigniswarteschlange, desto langsamer die Benutzeroberfläche.

@Juan fasst die Ereignisübertragung in einem einzigen Satz in seiner Antwort als Alternative zur Bindung von Ereignissen an viele untergeordnete Elemente zusammen.

+0

"Je länger die Ereigniswarteschlange" <- Je mehr Bindungen, desto mehr Verarbeitung wird benötigt, um den einzelnen zu identifizieren, auf den reagiert wird? Ist das die Idee? – Matrym

+0

Ich denke * das ist die * allgemeine * Idee, bedenkt, dass verschiedene Browser verschiedene Arten der Ereignisbehandlung implementieren. Werfen Sie einen Blick auf: http://stackoverflow.com/questions/282245/what-is-the-event-precedence-in-javascript – karim79

1

Soweit ich festgestellt habe, je mehr Listener Sie hinzufügen, desto langsamer wird die Benutzeroberfläche sein. Ereignisdelegierung verwendet weniger Speicher; anstelle eines Listeners für jeden untergeordneten Knoten haben Sie einen einzelnen, intelligenteren Handler für ein übergeordnetes Element. Weniger Speicher, weniger An- und Abhängen von Handlern.

Bewegen Sie den Cursor Ereignisse sind nicht unbedingt teurer, es ist kein zusätzlicher Speicher, es ist nur, dass Ihr Handler sehr oft ausgeführt wird, so dass Sie sicher, dass das Licht Code vornehmen müssen, es ist

Verwandte Themen