2014-03-30 1 views
6

In Firefox, der folgende Code korrekt funktioniert, wenn im Browser-Haupt Thread als normal-- Firefox - "Filereader ist nicht definiert" nur, wenn sie von Web Worker genannt

var fr = new FileReader(); 

laufen ..aber bei der Ausführung von ein Web-Worker wird der folgende Fehler ausgelöst:

FileReader is not defined 

Derselbe Code funktioniert in Chrome und Safari.

Vorschläge zur Unterstützung von FileReader in einem Web-Arbeiter in Firefox?

+1

Haben Sie versucht, 'FileReaderSync' anstelle von' FileReader' zu verwenden? – adeneo

+0

@adeneo, ja, das scheint unterstützt zu werden. Unterstützt FF kein asynchrones Lesen von Dateien? Funktionieren Chrome/Safari synchron, wenn ich FileReader verwende? –

+1

Nun, 'FileReaderSync' wird * nur * in Arbeitern unterstützt, da Sie normalerweise kein asynchronen Lesen von Dateien in einem Worker benötigen, aber ich bin mir nicht sicher, warum Firefox den normalen asynchronen' FileReader' in Worker I nicht unterstützt dachte sie, aber zumindest unterstützen sie die synchrone Version, also können Sie sie einfach benutzen, da Sie sowieso kein asynchrones Verhalten in einem Arbeiter brauchen. – adeneo

Antwort

7

Wie adeneo darauf hingewiesen hat, scheint FileReader in Web Workers einfach nicht von Firefox unterstützt zu werden. Ich konnte stattdessen FileReaderSync verwenden, um das zu erreichen, was ich brauchte.

+1

Die Bug-Anfrage auf Bugzilla im Zusammenhang mit dem Firefox-Mangel https://bugzilla.mozilla.org/show_bug.cgi?id=901097 – humanityANDpeace

+1

Aber ich will nicht gehen Sync, Sync saugt. Ich hatte gehofft, beim Lesen zu analysieren ... –

+0

Web-Arbeiter sind speziell für das Blockieren, intensive Aufgaben, die den Hauptfaden blockieren können, der eine schlechte Benutzererfahrung gibt (UI-Blockierung usw.). Das ist wahrscheinlich der Grund, warum sich Firefox auf die Implementierung von FileReaderSync in Workers vor FileReader konzentriert hat, was im Kontext von Web Worker mehr Sinn macht. – user885983

Verwandte Themen