Also funktioniert der ganze Code ziemlich gut. Eine Datenbank wird abgefragt, die Knoten-/Eltern-IDs werden träge an jsTree übergeben, und wenn man einen Begriff in die Suchleiste eingibt, geht ein ähnlicher Prozess weiter, aber die an jsTree übergebenen Knoten sind diejenigen, die von einer anderen SQL-Abfrage zurückgegeben werden wie SELECT nodeID FROM table WHERE name LIKE %searchTerm%
).Suche & LazyLoad kann mit Tippgeschwindigkeit nicht mithalten?
Es gibt nur ein Problem:
Wenn ich zu schnell in die Suchleiste eingeben, erhalten die Ergebnisse alle miteinander vermischt. Wenn ich langsam tippe (ich würde maximal 2 Buchstaben pro Sekunde schätzen), funktioniert alles gut. Irgendwelche schneller und alles ist zusammen verwischt. (Das heißt, wenn ich nach Namen suche, die den Begriff "test" enthalten und diesen schnell eingeben, erhalte ich Namen, die "t", "te", "tes" und "test" statt nur enthalten Namen, die "Test" enthalten.)
Wer hat dieses Problem schon einmal? Gibt es eine "warten bis bereit" -Funktion, die ich verwenden sollte?
Sie interessieren könnten in Ihre SQL-Logik zu suchen. Wenn Sie "
name LIKE %searchTerm%
" tun, werden Sie einen vollständigen Tabellenscan durchführen, der langsam ist. Möglicherweise möchten Sie die Zeichenfolgen in Ihrer App zwischenspeichern und eine schnelle Regex-Übereinstimmung durchführen, um lange Wartezeiten in db zu vermeiden. – randominstanceOfLivingThing