setTimeout
und debounce
sind in keiner Weise das Gleiche. setTimeout
wartet einfach n
Millisekunden und ruft die angegebene Funktion auf. debounce
gibt dagegen eine Funktion zurück, die den Rückruf erst nach n
Millisekunden nach dem letzten Aufruf der Funktionen aufruft.
Großer Unterschied. Entprellen/Drosselung (sie sind nicht dasselbe) Funktionen werden oft verwendet, um die Anzahl von Funktionsaufrufen als Folge von Benutzereingaben zu reduzieren. Stellen Sie sich ein Autocomplete-/Typeahead-Feld vor. Sie können eine Ajax-Anfrage bei jedem Tastendruck machen, aber das kann ziemlich schwer werden, also können Sie die Funktion entprellen, so dass nur 200ms nach der letzte Tastendruck ausgelöst wird.
Sie können hier auf die Dokumentation nachlesen: https://lodash.com/docs#debounce
Sie sind * deutlich * anders. Ich schlage vor, dass Sie die Dokumentation erneut lesen: http://underscorejs.org/#debounce (und beachten Sie, dass [debunce nutzt setTimeout unter der Haube] (https://github.com/jashkenas/underscore/blob/012fe2b77e3d206d763c0c078d3b97a63639fc24/undscore.js#) L855)) – Quentin