Tach!
Den Callback in Array.sort kannst Du aber keinesfalls durch ein Promise ersetzen, weil er ja eine Funktion darstellt, die zwei Arrayelemente vergleicht, also synchron zum Sort laufen muss.
Das war auch nicht meine Absicht. Nichtsdestotrotz ist diese Funktion ebenfalls ein Callback. Der Aufrufer wird zurückgerufen, um einen Teil der Aufgabe zu erledigen. Beim Sortieren/Finden passiert das mehrfach während der Arbeit, beim Promise einmal danach. Oder genauer gesagt, einmal als einer der letzten Schritte der Arbeit.
Etwas anderes wäre eine Sortierfunktion, die ein Promise zurückgibt, welches erfüllt ist sobald der sort fertig ist. Man könnte das Sortieren dann in einem separaten Thread durchführen und währenddessen andere nützliche Arbeit tun. Zum Beispiel ein zweites Array sortieren.
Scheitert bei Javascript daran, dass es üblicherwiese nicht mit mehreren Thread daherkommt. Aber du kannst dein Beispiel auf die Abfrage von Daten vom Server umbauen, dann wird es realistischer.
Aber ansonsten ist das Beispiel brauchbar, um zu zeigen, dass globale Variablen, die in einem Callback befüllt werden, konzeptionell Mist sind. Der Zugriff darauf darf und kann erst im Callback oder in davon aufgerufener Folgeverarbeitung erfolgen. Eine solche Variable global anzulegen, klappt nur, wenn sie in einem Promise gekapselt ist, das erst bei Befüllung erfüllt wird.
Promises sind jedenfalls ein wichtiger Grundpfeiler für asynchron arbeitende Anwendungen.
dedlfix.