2011-04-12 2 views
4

J'ai un travailleur Web (commencé avec new Worker()) qui effectue un traitement et est censé retourner un Float32Array.
Il semble cependant qu'après les données de l'ouvrier postMessage(), il passe par la sérialisation et la désialisation de JSON et ce que je reçois lors de la réception du message est un javascript simple Array (avec toutes les propriétés du tableau tapé original)JavaScript: Travailleur Web et tableaux typés

Un travail trivial serait de simplement recréer le tableau typé à partir de la matrice javascript, mais c'est inutile et prend du temps et de la mémoire.

Y a-t-il une meilleure façon de procéder? Une façon de dire à la désérialisation JSON d'instancier un Float32Array au lieu d'un tableau javascript? ou un moyen de transférer autrement les données binaires?

+0

Problème résolu: https://developer.mozilla.org/fr/DOM/The_structured_clone_algorithm – bennedich

Répondre

2

Tous les navigateurs qui prennent en charge les travailleurs (sauf IE10) soutiennent ce qu'on appelle objets transférables ce qui signifie que si vous avez un tampon de tableau (c.-à-d. prendre votre propriété .buffer de votre tableau typé) vous pouvez en tant que second paramètre de postMessage inclure une liste de tampons de tableau dont vous voulez transférer la propriété. C'est beaucoup plus rapide que de le copier.

Questions connexes