CSV-Datei lesen

MS-Tech

Erfahrenes Mitglied
Hallo Zusammen,

ich lese momentan eine CSV-Datei mit Hilfe der PapaParse-Bibliothek. Das funktionert auch einwandfrei. Jetzt ist es nur so, dass ich die Daten innerhalb der CSV-Datei bereits vor Anzeige der Seite benötige, damit ich eben Daten aus der CSV-Datei darstellen kann. Die Seite selber wird aber zu schnell aufgebaut, d.h. die Daten aus der CSV-Datei sind noch nicht komplett da. Wie kann ich nun die Seite dazu bringen bzw. den nachfolgenden Code, einfach zu warten, bis das File komplett geladen ist? Gibt es irgend nen Trick?

Viele Grüße
MS-Tech
 
Hi :),

achso. Na ich meinte generell. Alles soll warten, bis die Datei fertig geladen ist. Ich mach das so:

Javascript:
$(document).ready(function() {

    // Laden der CSV-Datei
    loadCsvData();

        //HIER MÜSSTE GEWARTET WERDEN

    // Lade Schlüssel aus datei
    var key = loadKeyFromFile();

    if (key == null) {
        window.location.replace("partner.html");
    }
   
    // Login-Button wird auf ein Klickevent
    // registriert.
    $('#btnLogin').bind('click', checkUserLogin);
});

Laden mit Papaparse....

Javascript:
function setCsvData(data) {
    localStorage.setItem("csvData", data);
}

function parseData(url, callBack) {
    Papa.parse(url, {
        download: true,
        delimiter: ";",
        header: true,
        dynamicTyping: true,
        complete: function(results) {
            setCsvData(results.data);
        }
    });
}

function loadCsvData() {
    if (localStorage.getItem("csvData") == null) {
        parseData("http://www.xyz.de/beispiel.csv", setCsvData);
        console.log("muss geladen werden!");
    } else {
        console.log("war geladen");
    }
}

Viele Grüße
MS-Tech
 
Hallo,
mal so als schnelle Schnapsidee. Setze alles vor dem Laden der CSV mit jQuery auf hide und dann nach dem die CSV geladen ist durch einen Callback wieder auf show.
Dazwischen kannst du dann auch einen Ladebalken oder sowas einblenden.

Grüße
 
Würde ich auch so machen, aber eher einen Overlay verwenden, dann muss man nur ein Element ausblenden wenn das Laden fertig ist. Callback für complete ist ja vorhanden.
 
Hallo Zusammen,

danke für eure Antwort. Ich werde das mal ausprobieren.

Aber gernell..gibt es hier keinen Timer, der mit dem nachfolgenden Code einfach wartet? In Java (ich weiß es ist kein Javascript *g*) gibt´s z.B. eine Thread.sleep(5000)...und somit kann ich 5 Sekunden warten. Hmm...

Grüße
 
Nein, ich kenne es auch von C und von der Unix-Shell aber AFAIK gibt es das bei Javascript nicht. Wäre ohnehin problematisch, es so zu machen, weil Du nie weißt, wie lange das Laden dauert. Die Zeit ist ja nicht einmal einheitlich, sondern hängt von den Bedingungen beim Client und beim Server ab. Sei froh, dass deine Konvertierungsfunktion einen Callback anbietet, mit dem Du es sauber erledigen kannst! Der ist genau für solche Zwecke vorgesehen.
 
Zuletzt bearbeitet:
(Browser engines sind so gemacht, dass auf das Beenden von
JS-Funktion gewartet wird => Ein Sleep würde alles stecken lassen.)
 
Okay dann habe ich jetzt schon nen Anhaltspunkt, wie ich das alles machen könnte bzw. kann.

Danke schon mal an euch für die Hilfe. Wie kann ich den Beitrag schließen?

Ach ja..mit dem JBoss Developer Studio kennt sich von euch keiner aus...oder mit Apache Cordova? :)
 

Neue Beiträge

Zurück