2016-04-03 13 views
0

Ich möchte eine einfache Lade-Nachricht vor einer Sortierung anzeigen, aber die Anzeige ändert sich von keiner zu blockieren nach der Sortierung, obwohl ich die Sortierung nach anrufe. Ich habe sogar versucht, mit setTimeout (2 Sekunden) die Anzeige zu ändern und dann eine Dummy-Funktion aufzurufen, um das Zeug zu sortieren.style.display ändert sich nach Array Sort

function sort(i) { 
    document.getElementById("loading").style.display = "block"; 
    array.sort(function(a, b) { 
     return a[i].localeCompare(b[i]); 
    }); 
} 
+0

Können Sie ausführbare Demo/Snippet oder [JSFiddle] (https://jsfiddle.net/) teilen? – Rayon

Antwort

1

Browser nicht hetzen, um die Seite neu zu zeichnen, während JS beschäftigt, arbeitet (unter der Annahme, dass es wahrscheinlich andere sein wird DOM ändert, dass sie sollten Charge gemeinsam für die Repaint) ist.

Sie müssen die Ereignisschleife freigeben, um ein Neuzeichnen zwischen Ihren beiden Anweisungen zu ermöglichen.

Verschieben Sie den Anruf zu array.sort in eine Funktion und rufen Sie nach einer Verzögerung (z. B. mit setTimeout oder requestAnimationFrame).

+0

Mit setTimeout funktionierte, musste ich nur die Funktion in den Parameter setzen, anstatt eine Funktion aufzurufen. Die Anzahl der Millisekunden war 0. Danke! –