2016-03-18 2 views
0

Gibt es einen erheblichen Overhead bei der Verarbeitung des Ereignisses, insbesondere wenn das Ereignis nur einen Listener hat?Feuert ein Polymer-Ereignis langsamer als nur die Listener-Funktion direkt aufzurufen?

Zum Beispiel ist es langsamer, nennen es auf diese Weise:

Polymer({ 
    'listeners': { 
    'some-event': 'someFunc', 
    }, 

    attached: function() { 
    this.fire('some-event'); 
    }, 

    someFunc: function(event) { 
    //do stuff.. 
    } 
}); 

Versus:

Polymer({ 
    attached: function() { 
    this.someFunc(); 
    }, 

    someFunc: function() { 
    //do stuff.. 
    } 
}); 

Antwort

0

Es gibt keinen nennenswerten Unterschied, wenn das Ereignis synchron ausgelöst wird (default) vor allem, wenn der Handler ruft event.stopPropagation() auf, damit das Ereignis nicht im DOM auf und ab blubbert. Wenn das Ereignis asynchron ausgelöst wird, wird der Handler nur aufgerufen, nachdem das aktuelle Ereignis vollständig verarbeitet wurde (wenn die nächste Aufgabe aus der Ereigniswarteschlange verarbeitet wird). Wenn es keinen bestimmten Grund gibt, würde ich den Handler direkt anrufen.

In Bezug auf eine Anfrage an den Server spielt der Unterschied keine Rolle. Wenn Sie eine hohe Bildrate anstreben und Hunderte oder Tausende solcher Aufrufe haben, könnten Sie einen Unterschied erkennen.

Verwandte Themen